我有一个包含多个输入文件的脚本,通常这些是默认存储在标准位置并由脚本调用。
但有时需要使用更改的输入来运行它。
在脚本中我现在说3个变量$ A $ B和$ C,现在我想用非默认的$ B运行它,明天我可能想用非默认的$ A和$ B来运行它。
我已经了解了如何解析命令行参数: How do I parse command line arguments in Bash?
但是我不知道如何在某些时候处理命令行语句的设置?
我没有足够的代表回答我自己的问题,但我有一个解决方案:
https://stackoverflow.com/a/4610469/2339623
#!/bin/bash
a=input1
b=input2
c=input3
while getopts "a:b:c:" flag
do
case $flag in
a) a=$OPTARG;;
b) b=$OPTARG;;
c) c=$OPTARG;;
esac
done
道歉我显然没有像我想的那样彻底搜索...
答案 0 :(得分:52)
您可以这样做,请参阅bash手册页中的Shell Parameter Expansion
#! /bin/bash
value=${1:-the default value}
echo value=$value
在命令行上:
$ ./myscript.sh
value=the default value
$ ./myscript.sh foobar
value=foobar
答案 1 :(得分:7)
您也可以在脚本之外设置变量,而不是使用命令行参数来覆盖默认值。例如,可以使用foo=54 /tmp/foobar
或bar=/var/tmp /tmp/foobar
:
#! /bin/bash
: ${foo:=42}
: ${bar:=/tmp}
echo "foo=$foo bar=$bar"