Questions tagged «shell-script»

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


2
如何在POSIX Shell脚本中创建算术循环?
我知道如何在中创建算术for循环bash。 如何在POSIX Shell脚本中进行等效循环? 由于有多种方法可以实现相同的目标,请随时添加您自己的答案并详细说明其工作原理。 一个这样的bash循环的示例如下: #!/bin/bash for (( i=1; i != 10; i++ )) do echo "$i" done

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。


8
基于if条件的案例失败
我正在寻找一种方法来根据bash中的case条件中的if条件发生失败。例如: input="foo" VAR="1" case $input in foo) if [ $VAR = "1" ]; then # perform fallthrough else # do not perform fallthrough fi ;; *) echo "fallthrough worked!" ;; esac 在上面的代码中,如果变量VAR是1,我希望条件条件执行失败。


2
%%在函数名称中表示什么?
查看的输出env,我发现还有以下功能。 BASH_FUNC_mc%%=() { . /usr/share/mc/mc-wrapper.sh } /usr/share/mc/mc-wrapper.sh文件的内容如下。 MC_USER=`id | sed 's/[^(]*(//;s/).*//'` MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$" /usr/bin/mc -P "$MC_PWD_FILE" "$@" if test -r "$MC_PWD_FILE"; then MC_PWD="`cat "$MC_PWD_FILE"`" if test -n "$MC_PWD" && test -d "$MC_PWD"; then cd "$MC_PWD" fi unset MC_PWD fi rm -f "$MC_PWD_FILE" unset MC_PWD_FILE %%函数名称中的字符是什么意思?它们是否使它成为在特定情况下调用的函数,还是让我以不同于其他函数的方式调用它? 我正在使用带有Bash版本4.3.42(1)-发行版(x86_64-suse-linux-gnu)的openSUSE 42.3,如果有什么不同的话。

1
如何测试Shell脚本的文件处理健壮性?
我已经编写了一个处理一些“常规”文件名的shell脚本,但是我读了为什么我的shell脚本为什么会在空白或其他特殊字符上出现问题?以及为什么不应该解析ls的输出,我希望它更加健壮并处理任何有效的文件名(和/或目录名)。如何创建文件和目录的测试平台来运行脚本?

2
bash不能在变量中存储hexvalue 0x00
我正在尝试用dd做一些技巧。我认为可以在名为“ header”的变量中存储一些十六进制值,以将其通过管道传递给dd。 我没有变量的第一步是: $ echo -ne "\x36\xc9\xda\x00\xb4" |dd of=hex $ hd hex 00000000 36 c9 da 00 b4 |6....| 00000005 之后,我尝试了这个: $ header=$(echo -ne "\x36\xc9\xda\x00\xb4") $ echo -n $header | hd 00000000 36 c9 da b4 |6...| 00000004 如您所见,我\x00在$header变量中失去了价值。有人对此行为有解释吗?这真让我抓狂。
11 linux  bash  shell-script  dd 



11
如何获取/ bin / sh函数的最后一个参数
有什么更好的实施方法print_last_arg? #!/bin/sh print_last_arg () { eval "echo \${$#}" # this hurts } print_last_arg foo bar baz # baz (如果#!/usr/bin/zsh不是这样,那么#!/bin/sh我不知道该怎么办。我的问题是找到一种合理的方法来实现#!/bin/sh。) 编辑:上面只是一个愚蠢的例子。我的目标不是打印最后一个参数,而是要有一种方法来引用Shell函数中的最后一个参数。 EDIT2:对于这样一个措辞不清楚的问题,我深表歉意。 我希望这次能做对。 如果/bin/zsh不是/bin/sh,我可以写这样的东西 #!/bin/zsh print_last_arg () { local last_arg=$argv[$#] echo $last_arg } 该表达式$argv[$#]是我在第一次EDIT中描述的一个示例,该引用是引用Shell函数中最后一个参数的方式。 因此,我真的应该像这样写我的原始示例: print_last_arg () { local last_arg=$(eval "echo \${$#}") # but this hurts even more echo $last_arg } …



3
用变量名定义变量
这个脚本怎么了?我正在尝试定义A1 = 1,B1 = 1,C1 = 1 LIST="A B C" for x in $LIST do "$x"1=1 done 结果是: ./x.: line 7: A1=1: command not found ./x.: line 7: B1=1: command not found ./x.: line 7: C1=1: command not found

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.