技术解析

咨询个小 bash 问题
0
2021-06-23 11:51:54
idczone

问题

如下 bash 里,有一个随机的参数 inputString,然后我想写一堆条件,为了得到一个中文变量。 请问这种 if elif 的写法有其他的简略写法没有?否则感觉有点笨...

CODE

有一个${inputString} 

if [ ${inputString} == "111" ]; then
    cn="中文 1"
elif [ ${inputString} == "222" ]; then
    cn="中文 2"
elif [ ${inputString} == "333" ]; then
    cn="中文 3"
elif [ ${inputString} == "444" ]; then
    cn="中文 4"
elif [ ${inputString} == "555" ]; then
    cn="中文 5"
elif [ ${inputString} == "666" ]; then
    cn="中文 6"
else
    cn="错误的输入"
fi
echo ${cn}

do {
if [ ${inputString} == "111" ]; then
cn="中文 1"
break
if [ ${inputString} == "222" ]; then
cn="中文 2"
break
cn="错误的输入"
} while(false)
语法可能有错误, 但方式就是用 do()while(false) + break 实现

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html
这个吗?

使用 case in 结构呗
case ${inputString} in
111)
cn="xxx"
;;
222)
cn="xxx"
;;
*)
cn="错误的输入"
;;
esac

bash 是支持 hash 表的, 具体用法可以搜索;
也可用 awk, 比如
awk '$1 == "'$input_string'" {print $2}' <111 中文 1
222 中文 2
333 中文 3
EOF

hash table 不知道 bash 有没有

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服