我有一个bash脚本,它从以下代码行获取用户输入。
echo "What is the customer name?"
read hostname
当运行脚本的用户回答问题时:
Company A in Texas
如何让脚本将空格转换为破折号?
Company-A-in-Texas
我可以使用文件运行处理来执行此操作,但是在脚本执行此操作时我正在绘制空白。我想我可以将数据发送到stdout,然后对其进行处理。只是想尝试一些其他的想法。
答案 0 :(得分:3)
可以使用tr
tr " " "-" <<< "Company A in Texas"
输出
Company-A-in-Texas
在脚本中添加: -
#!/bin/bash
echo "What is the customer name?"
read hostname
echo "$hostname" | tr " " "-"
将按OP需要输出。
答案 1 :(得分:3)
$ read -p "What is the customer name? " custname
What is the customer name? Company A in Texas
$ custname=${custname// /-}
$ echo "$custname"
Company-A-in-Texas
我已将echo
加read
替换为read -p
1 (用于“提示”)并重命名您的参数,因为hostname
是命令的名称,这可能会导致混淆。
要用破折号替换空格,我使用了parameter expansion;注意双斜杠以确保所有空格都被替换,而不仅仅是第一个。
1 请注意-p
选项是特定于Bash的,而没有为POSIX shell指定。