linux - 谁能解释一下这个 bash 脚本中发生了什么?

标签 linux bash

对于这个 UNIX shell 脚本,我必须使用一个有意义的示例输入 解释目的和任何可能的输出。

str=””
for word in $*
do
    if [$word == Tokyo]
    then
        str = “Capital Japan $str”
    else
        str = “$word $str”
    fi
done

echo str;

最佳答案

好吧,首先你的代码有错误:

第一个错误:

if [$word == Tokyo]

应该是:

if [ "$word" == Tokyo ]

[ 之后和 ] 之前留有空格,并在“$word”周围加上引号以防止分词

然后下一步:

str = “Capital Japan $str”

应该是:

str="Capital Japan $str"

请注意,str、等号和“Capital Japan $str” 之间没有空格。第 8 行也存在同样的问题。 您还注意到不同的报价吗?这些是您应该使用的双引号。代码第一行和第 8 行就是这种情况。

最后,打印出您输入的变量 str:

echo $str

尽管我确实建议使用引号。喜欢下面的内容

echo "$str"

最后一个错误导致您的脚本打印 str 而不是名为 str 的字符串

关于linux - 谁能解释一下这个 bash 脚本中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55671483/

相关文章:

linux - 我想将 find 的输出通过管道传输到文件中,只获取目录名

linux - top命令的CPU使用率计算

linux - 如何检索已安装操作系统的唯一签名?

regex - 在 Linux 中使用正则表达式重命名文件

bash - 查找序列号中的空白

bash - 使用 WGET 模拟 Web 事件

linux - mremap 可以将映射放置在 0 处吗?

bash - Bash 中 "and"语句的 "if"运算符

python - 同时运行多个 Python 脚本,然后依次运行

c - 在子进程中重定向标准输出是否对父进程也是如此?