Questions tagged «bash-scripting»

Bash脚本正在使用Bash Shell语言制作脚本。

1
如何一次提取多个文件?
我有很多rar文件存储如下: /torrents/televisionshowS01E0$X/nameoftelevisionshow.rar 其中$ X是变量= {0,1,2,...,12} 我想使用单个命令将它们提取到单个输出目录(/publicshare/)。 这是我到目前为止所拥有的: for i in find /torrents/televisionshowS01*/ -name *.rar; do unrar x "$i" /publicshare/;done 但我得到以下结果: Cannot open /torrents/televisionshowS01E01/.rar No such file or directory No files to extract 但是,find / torrents / televisionshowS01 * / -name * .rar会返回正确的路径。

2
运行脚本时获取错误没有这样的文件或目录
需要一点帮助。我刚刚编写了第一个脚本来更改网络配置。代码是 echo "changing IP to 172.17.51.71" echo "changing Mask to 255.255.255.0" echo "changing Gateway to 172.17.51.254" sed -i 's/.*IPADDR.*$/IPADDR=172.17.51.71/g' /etc/ifcfg-eth0.txt # ne need to change mask sed -i 's/.*IPADDR.*$/IPADDR=172.17.51.71/g' /etc/ifcfg-eth0 sed -i 's/.*GATEWAY.*$/GATEWAY=172.17.51.254/g' /etc/ifcfg-eth0.txt 我将icfg-eth0文件复制到文件etc夹以进行测试。当我运行脚本时,我收到错误 :No such file or diretorytxt :No such file or diretorytxt 但是当我只是在提示符上使用命令时,命令会起作用并改变我想要改变的内容。 知道为什么它在作为脚本运行时不起作用? AsteriskNOWv3(CentOS 6.2)

2
Linux:双引号变量和文件循环
在另一个问题中,我被建议在我的脚本中“双引用$ variables”以避免错误。 在阅读了大量关于双引号的信息之后,我认为当我需要(例如)循环文件时我可以/必须从双引号中排除通配符,但我想确定。 如果以下两种用法都正确使用双引号,你能告诉我吗? for file in "$workingdir"/*; do #do something with $file done if [[ $workingdir == $variable* ]]; then #do something fi 对于我在我的测试中看到的那样,使用"$workingdir/*"设置变量file与$workingdir/*这不是我想要的。 谢谢。 问候

0
带有Windows 10的Rubber Ducky
因此,当我进入以下内容时,我正在尝试在Windows 10上从Ducky运行文件: STRING for /f "tokens=3 delims= " %A in ('echo list volume ^| diskpart ^| findstr "DUCKY"') do (set DUCKYdrive=%A:) 如预期的那样,它将打开cmd提示符,输入字符串,然后使用DISKPART打开另一个cmd提示符,仅此而已。它只是挂在那里。当我关闭DISKPART cmd时,它转到另一个cmd,并说找不到文件/文件位置。在Windows 7上这确实没有问题,因此我认为Windows 10只是采用了我不知道的其他命令。

2
'hhighlighter'包装器脚本说找不到命令
我已经从https://github.com/paoloantinori/hhighlighter获得了包装脚本'hhighlighter',该脚本可以为stdout中的任何颜色着色。我遵循了有关安装ack-grep的说明,在〜/ .bashrc中为ack = ack-grep创建了别名,将h()函数放在〜/ .bashrc中,在终端中键入时一切正常。但是,当将完全相同的命令放在bash脚本中时,它表示未找到命令。我会在这里举例说明... root@kali:~# echo "abcd" | h a b c d abcd 这是我的脚本的样子 #!/bin/bash echo "abcd" | h a b c d 就像键入的命令一样,但是这里是运行脚本时的输出 root@kali:~# ./test.sh ./test.sh: line 1: h: command not found 当直接在终端中键入而不是在bash脚本中使用完全相同的命令时,如何工作?

1
在变量中捕获bash命令错误
我psql在bash脚本中使用(PostgreSQL)命令: function create_database () { sudo -u postgres psql -c "CREATE DATABASE $1 WITH OWNER $2;" 2>ERROR if [[ $? -ne 0]; then echo "error -> $ERROR" return 1 else: .... return 0 } 我正在尝试捕获error并将其传递给变量,但是该变量为空。



2
脚本变量未按预期打印
为了调试脚本,我正在打印包含文本的变量,这是非常标准的东西,只是变量的行为不符合预期。我发现我正在读取的文件的其中一行少于17个字符,进一步弄乱了脚本,因此我正在测试小于17的长度并尝试添加18个空格。发生的情况是将空格添加到变量的开头并覆盖那里的字母,而不是在我希望添加字母的末尾。长度计算正确显示为35。 do STR=$line length=${#STR} spaces=". ." <<<<18 spaces in here end=end if [ $length -le 17 ] then TEMPSTR=$STR echo $TEMPSTR echo $end echo $length TEMPSTR2="$TEMPSTR$spaces" length=${#TEMPSTR2} echo $TEMPSTR2 echo $length fi 正在“ Fan Tray(8个空格)”行中读取以产生: Fan Tray end 17 . . <<< 18 spaces in here 35 我期望它显示: Fan Tray …


2
在UNIX Shell脚本中一行执行多个命令
这个问题与这里提出的问题有些相关,https://stackoverflow.com/questions/5130847/shell-multiple-commands-in-one-line,但是区别是,无论是否需要执行全部命令命令成功与否。所以我想,&&这不是一种选择吗?我可以使用;分开的命令和eval或bash; 就像是 eval cd /home/user/homedir ; /home/user/homedir/sbin/daemon.sh --config /home/user/homedir/etc/dd2 --script /home/user/homedir/sbin/dd3 start action1 或类似的东西? 请指教,

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.