Questions tagged «shell-script»

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


1
在bash脚本中,在“ if”语句中使用条件“或”
这个问题是我先前提出的问题的后遗症。该站点上的用户好心地帮助我确定了如何编写一个for遍历字符串值的bash 循环。例如,假设循环控制变量fname遍历string "a.txt" "b.txt" "c.txt"。我想echo“是!” when fname具有值"a.txt"or "c.txt",并且为echo“ no!” 除此以外。我已经尝试了以下bash shell脚本: #!/bin/bash for fname in "a.txt" "b.txt" "c.txt" do echo $fname if [ "$fname" = "a.txt" ] | [ "$fname" = "c.txt" ]; then echo "yes!" else echo "no!" fi done 我得到的输出: a.txt 没有! b.txt 没有! c.txt 是! 为什么if当fname有值时语句显然产生true "a.txt"?我使用|不正确吗?
127 bash  shell-script 

1
什么时候需要双引号?
过去的建议是,将涉及a的任何表达式都用双引号括起来$VARIABLE,至少如果一个人希望它被shell解释为一个单独的项目,否则,内容中的任何空格$VARIABLE都会抛弃shell。 但是,据我了解,在最新版本的Shell中,不再总是需要使用双引号(至少出于上述目的)。例如,在bash: % FOO='bar baz' % [ $FOO = 'bar baz' ] && echo OK bash: [: too many arguments % [[ $FOO = 'bar baz' ]] && echo OK OK % touch 'bar baz' % ls $FOO ls: cannot access bar: No such file or directory ls: cannot access …


4
在shell脚本中使用shift的目的是什么?
我遇到了这个脚本: #! /bin/bash if (( $# < 3 )); then echo "$0 old_string new_string file [file...]" exit 0 else ostr="$1"; shift nstr="$1"; shift fi echo "Replacing \"$ostr\" with \"$nstr\"" for file in $@; do if [ -f $file ]; then echo "Working with: $file" eval "sed 's/"$ostr"/"$nstr"/g' $file" > $file.tmp …

7
使用不等于运算符进行字符串比较
我试图检查该PHONE_TYPE变量是否包含三个有效值之一。 if [ "$PHONE_TYPE" != "NORTEL" ] || [ "$PHONE_TYPE" != "NEC" ] || [ "$PHONE_TYPE" != "CISCO" ] then echo "Phone type must be nortel,cisco or nec" exit fi 上面的代码对我不起作用,所以我尝试了一下: if [ "$PHONE_TYPE" == "NORTEL" ] || [ "$PHONE_TYPE" == "NEC" ] || [ "$PHONE_TYPE" == "CISCO" ] then …

5
我可以同时将输出重定向到日志文件和后台进程吗?
我可以同时将输出重定向到日志文件和后台进程吗? 换句话说,我可以做这样的事情吗? nohup java -jar myProgram.jar 2>&1 > output.log & 或者,这不是合法命令吗?或者,是否需要手动将其移至后台,如下所示: java -jar myProgram.jar 2>$1 > output.log jobs [CTRL-Z] bg 1
116 bash  shell  shell-script 

3
如何在远程计算机上执行本地脚本并包含参数?
我编写了一个在本地执行时可以正常运行的脚本: ./sysMole -time Aug 18 18 参数“ -time”,“ Aug”,“ 18”和“ 18”已成功传递到脚本。 现在,该脚本旨在在远程计算机上执行,但是可以从本地计算机上的本地目录执行。例: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole 那也很好。但是,当我尝试包括上述论点(时间为8月18日18)时,就会出现问题,例如: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole -time Aug 18 18 运行该脚本后,出现以下错误: bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell 请告诉我我在做什么错,这非常令人沮丧。

3
linux +添加X天日期并获取新的虚拟日期
我有Linux(RH 5.3)机器 我需要添加/计算10天加上日期,以便获得新的日期(失效日期) 例如 # date Sun Sep 11 07:59:16 IST 2012 所以我需要 NEW_expration_DATE = Sun Sep 21 07:59:16 IST 2012 请建议如何计算新的到期日期(使用bash,ksh或操纵日期命令?)
115 linux  bash  shell-script  date 

8
将命名参数传递给Shell脚本
有没有简单的方法可以将命名参数传递(接收)到Shell脚本? 例如, my_script -p_out '/some/path' -arg_1 '5' 并在内部my_script.sh将其接收为: # I believe this notation does not work, but is there anything close to it? p_out=$ARGUMENTS['p_out'] arg1=$ARGUMENTS['arg_1'] printf "The Argument p_out is %s" "$p_out" printf "The Argument arg_1 is %s" "$arg1" 在Bash或Zsh中可能吗?



10
并行化Bash FOR循环
我一直在尝试使用GNU Parallel并行化以下脚本,尤其是三个FOR循环实例中的每个实例,但未能做到。FOR循环中包含的4条命令是串行运行的,每个循环大约需要10分钟。 #!/bin/bash kar='KAR5' runList='run2 run3 run4' mkdir normFunc for run in $runList do fsl5.0-flirt -in $kar"deformed.nii.gz" -ref normtemp.nii.gz -omat $run".norm1.mat" -bins 256 -cost corratio -searchrx -90 90 -searchry -90 90 -searchrz -90 90 -dof 12 fsl5.0-flirt -in $run".poststats.nii.gz" -ref $kar"deformed.nii.gz" -omat $run".norm2.mat" -bins 256 -cost corratio -searchrx -90 90 …


13
解码URL编码(百分比编码)
我想解码URL编码,是否有任何内置工具可以执行此操作,或者有人可以为我提供sed执行此操作的代码吗? 我确实在unix.stackexchange.com和互联网上进行了一些搜索,但是找不到用于解码url编码的任何命令行工具。 我想做的就是简单地就地编辑txt文件,以便: %21 变成 ! %23 变成 # %24 变成 $ %26 变成 & %27 变成 ' %28 变成 ( %29 变成 ) 等等。

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.