如何将用户输入空间转换为破折号

时间:2016-06-16 15:26:37

标签: bash

我有一个bash脚本,它从以下代码行获取用户输入。

echo "What is the customer name?"
read hostname

当运行脚本的用户回答问题时:

Company A in Texas

如何让脚本将空格转换为破折号?

Company-A-in-Texas

我可以使用文件运行处理来执行此操作,但是在脚本执行此操作时我正在绘制空白。我想我可以将数据发送到stdout,然后对其进行处理。只是想尝试一些其他的想法。

2 个答案:

答案 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

我已将echoread替换为read -p 1 (用于“提示”)并重命名您的参数,因为hostname是命令的名称,这可能会导致混淆。

要用破折号替换空格,我使用了parameter expansion;注意双斜杠以确保所有空格都被替换,而不仅仅是第一个。

1 请注意-p选项是特定于Bash的,而没有为POSIX shell指定。