我目前有一个bash脚本,其中我对某些变量进行了硬编码,我希望能够通过传递参数来设置这些变量。
一个简单示例:考虑脚本example.sh
,其中我有变量data_names
和run_this
#!/bin/bash
data_names=("apple_picking" "iris")
run_this="TRUE"
#remainder of script runs things using these hard coded variables
我想知道是否可以编辑此脚本以便:
我可以在运行data_names
run_this
和bash example.sh
的值
如果没有为data_names
和run_this
传递任何参数到脚本,则变量应采用默认(硬编码)值。
答案 0 :(得分:2)
如果你想要一些健壮,清晰和健康的东西。优雅,你应该看看getopts
来设置run_this
教程:http://wiki.bash-hackers.org/howto/getopts_tutorial示例:http://mywiki.wooledge.org/BashFAQ/035
我想到的是:
./script --run-this=true "apple_picking" "iris"
答案 1 :(得分:0)
您可以使用:
#!/bin/bash
# create a BASH array using passed arguments
data_names=("$@")
# if array is empty assign hard coded values
[[ ${#data_names[@]} -eq 0 ]] && data_names=("apple_picking" "iris")
# print argument array or do something else
printf "%s\n" "${data_names[@]}";
答案 2 :(得分:0)
另一种选择是这样的:
run_this=${1:-TRUE}
IFS=',' read -a data_names <<< "${2:-apple_picking,iris}"
假设您的脚本被调用为:
./script.sh first_argument array,values,in,second,argument