Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

2
在不扩展/求值的情况下回显其中包含变量的字符串
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 4年前关闭。 我到处搜寻。尝试回显和打印。尝试使用单引号和双引号。但是我已经解析了数据并将其分配给一个变量,然后想对其进行评估以了解其中是否包含变量。然后,我将使用通配符替换变量并搜索文件。 例: var="file.$DATE.txt" ### Where it goes wrong- Needs to identify that $DATE is within the $var varaible. test=$(echo "$var"|grep '\$') if [[ $test ]] then ### I would use whatever fix is discovered here as well test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/') fi ### (Actually pulling from remote machine …
12 bash  shell  quoting 

2
并行运行命令,并等待一组命令完成后再启动下一个命令
我有包含多个命令的脚本。如何将命令组合在一起运行(我想制作几组命令。在每组中,命令应并行运行(同时)。各组应顺序运行,等待一组完成后再开始运行。下一组)...即 #!/bin/bash command #1 command #2 command #3 command #4 command #5 command #6 command #7 command #8 command #9 command #10 我怎样才能每三个命令运行一次?我试过了: #!/bin/bash { command #1 command #2 command #3 } & { command #4 command #5 command #6 } & { command #7 command #8 command #9 }& …

2
如何扩展波浪符号〜作为变量的一部分?
当我打开bash提示并键入: $ set -o xtrace $ x='~/someDirectory' + x='~/someDirectory' $ echo $x + echo '~/someDirectory' ~/someDirectory 我希望上面的第五条线会过去+ echo /home/myUsername/someDirectory。有没有办法做到这一点?在我最初的Bash脚本中,实际上是通过如下循环从输入文件中的数据填充变量x: while IFS= read line do params=($line) echo ${params[0]} done <"./someInputFile.txt" 不过,我得到了类似的结果,echo '~/someDirectory'而不是echo /home/myUsername/someDirectory。

2
如何在另一个函数中调用一个函数
我实际上正在使用Shell脚本来监视服务器的资源。我有一个函数,我想知道:如何在主函数内调用第二个函数? 例: funct mainfunct(){ echo "Text to show here" **$secondfunct** } funct secondfunct(){ commands }
12 shell  scripting 



3
为什么sh(不是bash)抱怨.bashrc中定义的函数?
打开终端会话时,我得到了这个: sh:导入“ read.json”的函数定义时出错 sh:导入“ ts-project”的函数定义时出错 sh不喜欢这些功能,因为它们看起来像: read.json(){ :: } 和 ts-project(){ :: } 真正的问题是-为什么要sh触摸/解释这些文件?我在MacOS上,以前曾经看过,这真是个谜。我认为只有bash会加载这些文件。 更新:bash和sh并没有什么不同。当我在终端中输入bash时,得到以下信息: alex$ bash beginning to load .bashrc finished loading .bashrc bash-3.2$ 当我sh在终端输入时,得到以下信息: alex$ sh sh: error importing function definition for `read.json' sh: error importing function definition for `ts-project' sh-3.2$

3
如何通过命令替换生成另一个命令的参数
从以下内容开始: Shell命令替换中的意外行为 我有一个命令,可以接收大量参数,其中一些参数可以合法地包含空格(可能还有其他内容) 我写了一个脚本,可以为我生成带引号的参数,但是我必须复制并粘贴输出,例如 ./somecommand <output on stdout with quoting> ./othercommand some_args <output from above> 我试图通过简单地简化 ./othercommand $(./somecommand) 并遇到了上面提到的意外行为。问题是-可以可靠地使用命令替换生成参数,othercommand前提是某些参数需要引用并且不能更改?


4
为什么heredoc中的JSON内容不可解析?
我有一个JSON片段。 以下内容不起作用: VALUE=<<PERSON { "type": "account", "customer_id": "1234", "customer_email": "jim@gmail.com" } PERSON echo -n "$VALUE" | python -m json.tool 结果是: JSON对象无法解码 对进行相同的操作jq,即 echo -n "$VALUE" | jq '.' 没有输出。 对于以下情况,存在相同的行为: VALUE=<<PERSON '{ "type": "account", "customer_id": "1234", "customer_email": "jim@gmail.com" }' PERSON echo -n "$VALUE" | python -m json.tool 响应: JSON对象无法解码 但是以下工作原理: …

3
ssh远程命令行参数如何解析
我已经看到了有关需要对远程ssh命令的参数进行两次转义的问题和解答。我的问题是:第二次解析究竟在何时何地完成? 如果我运行以下命令: $ ssh otherhost pstree -a -p 我在输出中看到以下内容: |-sshd,3736 | `-sshd,1102 | `-sshd,1109 | `-pstree,1112 -a -p 远程命令(pstree)的父进程是sshd,似乎没有任何shell可以解析远程命令的命令行参数,因此似乎没有必要使用双引号或转义(但绝对是)。相反,如果我先在那儿ssh并获得一个登录shell,然后运行,pstree -a -p我会在输出中看到以下内容: ├─sshd,3736 │ └─sshd,3733 │ └─sshd,3735 │ └─bash,3737 │ └─pstree,4130 -a -p 很明显,bash在这种情况下,有一个外壳可以进行命令行解析。但是,在我直接使用远程命令的情况下,似乎没有外壳,那么为什么需要双引号?
11 bash  shell  ssh  process  quoting 

3
当“ / bin / sh”指向“ / bin / bash”时运行shell脚本
我已经在这个问题中阅读以下内容: bash支持--posix开关,这使其更符合POSIX。如果以sh调用,它也会尝试模仿POSIX 。 上面的引用假设这/bin/sh是指向的链接/bin/bash。 但是我不太了解“ sh调用”的含义。 假设我有以下脚本,称为“ script.sh”: #!/bin/bash echo "Hello World" 在以下每种情况下,请告诉我该脚本是在普通bash模式下还是在POSIX模式下运行(假设我已经在运行的终端中执行了以下命令bash): sh script.sh bash script.sh ./script.sh 现在说我有以下脚本,称为“ script.sh”(类似于上面的脚本,但没有shebang): echo "Hello World" 在以下每种情况下,请告诉我该脚本是在普通bash模式下还是在POSIX模式下运行(假设我已经在运行的终端中执行了以下命令bash): sh script2.sh bash script2.sh ./script2.sh
11 linux  bash  shell 



4
如何确定“睡眠”中剩余的时间?
我有: sleep 210m && for i in $(seq 1 5); do echo -e '\a'; sleep 0.5; done 作为一个简单,省时的计时器运行,以提醒我何时应该执行某些操作。那sleep 210m是PID 25347。 我试图弄清楚睡眠还剩下多少时间。我想出的最好的方法是,我输入原始的睡眠时间(210分钟)是: $ echo "210 60 * $(ps -o etimes= 25347) - 60 ~ r n [:] P p" | dc 78:11 (说明:第一位计算原始睡眠的秒数;该$(ps…)位获取睡眠开始以来的时间(以秒为单位),然后其余部分减去它们,并以分钟和秒为单位显示。) 在我看来,这通常会很有用;有一个更好的方法吗?或者至少是一种聪明的方法来解析睡眠时间ps -o args?
11 shell  sleep 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.