3

我需要dos2unix在变量中执行命令。有了我们刚刚做的文件dos2unix myfile.txt。我怎样才能用变量做到这一点?例如:

variable="bla\r"
dos2unix $variable

也欢迎使用其他命令的建议。

PS.:我无法对正在阅读文本的文件执行 dos2unix。

4

3 回答 3

3

这里不需要任何外部命令;您可以使用参数扩展来仅使用 shell 本身内置的功能来删除CRs,因此既可以更快地执行(使用相当短的字符串),又可以保证在任何具有 bash(或类似扩展的 shell,例如 ksh93 或 zsh)的系统上工作),即使没有安装 dos2unix:

$ PS1='> ' # for readability, to distinguish output starting with '$' literals
> variable_in=$'bla\r'
> variable_out=${variable_in//$'\r'/}
> printf '%q\n' "$variable_in"
$'bla\r'
> printf '%q\n' "$variable_out"
bla
于 2015-11-03T18:41:34.470 回答
2

您可以使用tr

echo "$variable"| tr -d '\r'

或者

tr -d '\r' <<< "$variable"
于 2015-11-03T18:40:09.087 回答
2

dos2unix 可以从标准输入读取,因此您可以编写echo "$variable" | dos2unix. 试试这个:

$ variable=$'bla\r'

$ echo "$variable" | cat -A
bla^M$

$ echo "$variable" | dos2unix | cat -A
bla$
于 2015-11-03T18:41:03.703 回答