我想编写shell脚本在一行中输出两个变量。
我的脚本是:
SRC = "192.168.1.1"
PORT = "22"
我想让输出看起来像
192.168.1.1,22
这个怎么做?谢谢。
答案1
要回显任意数量的变量,只需在同一echo
命令中引用它们即可。另请注意,正确的 shell 赋值语法在=
.
#!/bin/sh
SRC="192.168.1.1"
PORT="22"
echo "$SRC,$PORT"
运行脚本的结果将是:
$ ./test.sh
192.168.1.1,22
答案2
您通常会用来printf
输出变量的数据,如下所示:
#!/bin/sh
src=192.168.1.1
port=22
printf '%s,%s\n' "$src" "$port"
- 我
#!
在顶部添加了缺少的 - 行。我选择了/bin/sh
shell(POSIX shell),因为现有代码中没有任何内容需要特定的其他 shell,例如bash
或zsh
(另请参阅哪个 shell 解释器运行不带 shebang 的脚本?)。 - 完成分配时,字符周围没有空格
=
(请参阅shell 脚本中变量赋值中的空格)。 - 我使用小写变量名称以避免与现有环境变量或特定于 shell 的变量意外冲突(请参阅shell 脚本中的变量有命名约定吗?)。
- 我选择使用
printf
作为预防措施,因为我不知道您的数据最终是否可能从某些外部源到达,并且echo
众所周知有时会出现问题一些特定字符串(参见为什么 printf 比 echo 更好?)。
您可能还会发现以下关于引用的有趣内容:
或者,
#!/bin/sh
src=192.168.1.1
port=22
string="$src,$port"
printf '%s\n' "$string"
这里唯一的区别是我使用前两个变量的逗号分隔值创建了一个新变量,然后输出它。这可能是您想要的,具体取决于您稍后在脚本中对该字符串的使用。