可以在bash的命令中使用条件语句吗? [复制]
Posted
技术标签:
【中文标题】可以在bash的命令中使用条件语句吗? [复制]【英文标题】:Can a conditional statement be used inside a command in bash? [duplicate] 【发布时间】:2021-04-10 19:30:10 【问题描述】:可以将条件语句插入到例如带有 bash 的 echo 之类的打印命令中吗?
例如(不工作)
$ cat t.sh
#!/bin/bash
string1="It's a "
string2opt1="beautiful"
string2opt2="gross"
string3=" day."
read c
echo -n "$string1 $( [[ $c -eq 0 ]] && echo -n "$string2opt1" || echo "$string2opt2" ) $string3"
我知道分号/非单行符可以做到这一点;我只是想知道是否有更优雅或可接受的方式来做到这一点。
【问题讨论】:
结束
需要前面的换行符或分号。
请注意,$(...)
命令替换会删除所有尾随换行符,因此不需要 echo -n
@glennjackman 是的,我让它在一行中使用了一堆分号——我只是想知道是否有一种方法可以让单个echo
命令来处理条件语句本身。也许我应该展示我在问题中的有效解决方案——对不起!我认为我给出的例子会更清楚地说明我对什么感到好奇。正如 jared_mamrot 的回答所示,我不知道单个回声可以处理多组引号,这与我预期的一样好。另外,感谢您提供有关命令替换如何工作的额外信息! :^)
【参考方案1】:
为了澄清,你想实现这个:
#!/bin/bash
string1="It's a"
string2opt1="beautiful"
string2opt2="gross"
string3="day."
read -r c
if [[ $c -eq 0 ]]; then
echo "$string1" "$string2opt1" "$string3"
else
echo "$string1" "$string2opt2" "$string3"
fi
但在单行中。这对你有用吗?
#!/bin/bash
string1="It's a"
string2opt1="beautiful"
string2opt2="gross"
string3="day."
read -r c
echo "$string1" "$([[ $c -eq 0 ]] && echo "$string2opt1" || echo "$string2opt2")" "$string3"
【讨论】:
哇。我可以发誓我在某个时候尝试过这种语法。非常感谢!以上是关于可以在bash的命令中使用条件语句吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章