Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

2
sudo:无法执行./script.sh:没有这样的文件或目录
我很沮丧 我的/home目录中有一个可执行的脚本: [user@server ~]$ ll total 4 -rwx------ 1 user user 2608 Jul 15 18:23 qa.sh 但是,当我尝试使用sudo它运行时说找不到它: [user@server ~]$ sudo ./qa.sh [sudo] password for user: sudo: unable to execute ./qa.sh: No such file or directory 这是一个全新的版本。没有进行会导致问题的更改。实际上,脚本的目的是确保它实际上是根据我们的政策构建的。也许不是,sudo实际上在构建过程中被破坏了吗? 我还应该注意,我可以sudo在其他目录中使用其他命令来运行。 编辑:脚本(我没有写过,所以请不要/bin/bash在上面写;)) #! /bin/bash . /root/.bash_profile customer=$1 if [ -z "$customer" ]; then echo …



5
如何使用while循环从两个输入文件中读取
我想知道是否有任何一种方式可以同时嵌套嵌套循环读取两个输入文件。例如,假设我有两个文件FileA和FileB。 FileA: [jaypal:~/Temp] cat filea this is File A line1 this is File A line2 this is File A line3 文件B: [jaypal:~/Temp] cat fileb this is File B line1 this is File B line2 this is File B line3 当前示例脚本: [jaypal:~/Temp] cat read.sh #!/bin/bash while read lineA do echo $lineA …


8
配管,移位或参数扩展更有效吗?
我试图找到最有效的方法来迭代某些值,这些值在用空格分隔的单词列表中彼此保持一致的值数(我不想使用数组)。例如, list="1 ant bat 5 cat dingo 6 emu fish 9 gecko hare 15 i j" 因此,我希望能够仅遍历list并仅访问1,5,6,9和15。 编辑:我应该明确指出,我要从列表中获取的值的格式不必与列表的其余部分不同。使它们与众不同的仅仅是它们在列表中的位置(在这种情况下,位置1,4,7 ...)。因此,列表可能是,1 2 3 5 9 8 6 90 84 9 3 2 15 75 55但我仍然想要相同的数字。而且,假设我不知道列表的长度,我希望能够做到这一点。 到目前为止,我想到的方法是: 方法一 set $list found=false find=9 count=1 while [ $count -lt $# ]; do if [ "${@:count:1}" …

1
如果“ bash <文件>”有效,为什么“源<文件>”抛出错误?
我有以下脚本: #!/bin/bash set -x if :; then echo a fi 如果我运行bash /tmp/file,a则会被回显,但是如果我运行source /tmp/file,则会得到: bash: /tmp/test: line 6: syntax error: unexpected end of file 输出: knezi@holly tmp]$set -x; source /tmp/test; set +x + source /tmp/test ++ set -x bash: /tmp/test: line 6: syntax error: unexpected end of file + set +x …

6
如何将SSH发布密钥分发到服务器列表,而不必一遍又一遍地输入密码?
最近,我获得了用户名/密码访问服务器列表的权限,并希望将我的SSH公钥传播到这些服务器,以便我可以更轻松地登录。 这样很清楚: 远程服务器上没有任何可用于自动执行此操作的公钥 这是我第一次登录这些服务器,并且我不想经常输入我的凭据来访问它们 我也不想一遍又一遍地ssh-copy-id在for循环中输入密码。

7
需要sudo的脚本是否应该失败(如果没有),或者使用sudo和提示符?
我有一个脚本,可以对背光亮度进行精细控制,并且需要sudo运行。本质上是这样的: backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | tee $backlight 并居住在~/bin/backlight-adjust。该脚本需要sudo特权,因为tee $backlight正在写入特权位置。因此,如果不与一起运行,它将失败sudo。 这种方法有一个问题,因为我不能随便跑sudo backlight-adjust,因为~/bin不在$PATH的sudo环境下,只有在我的环境。所以我必须运行sudo env "PATH=$PATH" backlight-adjust或类似的方法。 或者,我可以这样写: backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | sudo tee $backlight 并提示我输入密码。 第二种方法对我来说更好,因为我不必记住键入sudo。它会提示我。而且我可以保持$PATH原样。总体上来说,这样做更方便,但是有什么原因使我不应该第二种方式呢? (如果正在运行Xubuntu 14.04,并且我的shell是GNU bash 4.2.45,则可以这样做。)

6
连接具有相同标题的多个文件
我有多个文件,这些文件具有相同的标头,并且在其下具有不同的向量。我需要将所有这些都连接起来,但是我只希望连接第一个文件的标头,并且我不希望将其他头连接在一起,因为它们都是相同的。 例如:file1.txt &lt;header&gt;INFO=&lt;ID=DP,Number=1,Type=Integer&gt; &lt;header&gt;INFO=&lt;ID=DP4,Number=4,Type=Integer&gt; A B C file2.txt &lt;header&gt;INFO=&lt;ID=DP,Number=1,Type=Integer&gt; &lt;header&gt;INFO=&lt;ID=DP4,Number=4,Type=Integer&gt; D E F 我需要输出 &lt;header&gt;INFO=&lt;ID=DP,Number=1,Type=Integer&gt; &lt;header&gt;INFO=&lt;ID=DP4,Number=4,Type=Integer&gt; A B C D E F 我可以在R中编写脚本,但是在shell中需要它吗?


5
Shell脚本:检查Internet连接的正确方法?
我发现脚本说他们检查互联网连接。有些人会检查接口的IP地址,但不会检查Internet连接。我发现有些使用ping的方法是这样的:if [ 'ping google.com -c 4 | grep time' != "" ]; then但是有时候ping可能由于某些原因而挂起(例如,等待某些卡住的IO),因此这可能并不可靠。 关于使用脚本检查Internet连接的正确/可靠方式的任何建议?我需要使用一些软件包吗? cron例如,它需要能够定期检查,然后在连接断开时执行某些操作,例如调用ifup --force [interface]

8
将配置文件用于我的Shell脚本
我需要为自己的脚本创建一个配置文件:这里是一个示例: 脚本: #!/bin/bash source /home/myuser/test/config echo "Name=$nam" &gt;&amp;2 echo "Surname=$sur" &gt;&amp;2 内容/home/myuser/test/config: nam="Mark" sur="Brown" 可行! 我的问题是:这是正确的方法还是其他方法?

6
如何在脚本中添加算术变量
我想累积一个文件夹中包含的许多文件的行大小。我写了以下脚本: let a=0 let num=0 for i in folder/* do num=`cat $i | wc -l` a=$a+$num done echo $a 我在脚本末尾得到的是123 + 234 + 432 + ...,而不是加法算术运算的结果。

5
如何在Bash中获得http链接的最后一部分?
我有一个http链接: http://www.test.com/abc/def/efg/file.jar 我想将最后一部分file.jar保存为变量,因此输出字符串为“ file.jar”。 条件:链接可以具有不同的长度,例如: http://www.test.com/abc/def/file.jar. 我尝试过这种方式: awk -F'/' '{print $7}' ,但问题是URL的长度,因此我需要一个可用于任何URL长度的命令。
25 bash  shell-script  awk  cut 

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.