Rad*_*dek 5 alias shell-script quoting escape-characters
我有一行要使用别名调用。
while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"; do sleep 30; done
我试图逃跑',\'但没有成功。
在别名中使用上面的单行的正确语法是什么?
alias my_du=$'while printf \'%s \' "$(df -P / | awk \'NR==2 { print $(NF-1) }\')"; do sleep 3; done'
Run Code Online (Sandbox Code Playgroud)
你可以检查结果
alias my_du
Run Code Online (Sandbox Code Playgroud)
If$()由"而不是'or\然后它被替换并且结果而不是预期的程序调用成为别名定义的一部分。
虽然这可以被哄成别名,但函数通常是首选。来自man bash:
对于几乎所有目的,别名都被 shell 函数取代。
函数形式的别名:
my_du() {
while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"
do
sleep 30
done
}
Run Code Online (Sandbox Code Playgroud)
这更具可读性,因此更易于维护。