小编Nat*_*ouk的帖子

为什么 $1 在 $'...' 中使用时不起作用?

input() {
    read -p $'\e[31m\e[1m $1 [Y/n] \e[0m' -n 1 -r
}

input "test"
exit
Run Code Online (Sandbox Code Playgroud)

这只是打印“$1”作为文本行。为什么不打印“测试”,我怎样才能做到这一点?

bash

3
推荐指数
1
解决办法
507
查看次数

如何在惯用的 bash 中编写此函数?

我对 Bash shell 脚本很陌生,我终于让下面的代码工作了。我不能让它以任何其他方式工作,但我觉得它是非常草率的代码。

有人可以帮我用惯用的(安全、简洁、易读的)Bash 重写这段代码吗?我特别想知道是否有更好的方法从函数返回值,以及我是否在 if 语句中正确测试它。(我应该为 if 语句使用括号吗?)

#!/bin/bash

input() {
    read -p $'\e[31m\e[1m'"$1"$' [Y/n] \e[0m' -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]
    then
        return 0
    fi
    return 1
}

if input "Upgrade Arch?"
then
    sudo pacman -Syu
fi
Run Code Online (Sandbox Code Playgroud)

bash shell-script

1
推荐指数
1
解决办法
157
查看次数

标签 统计

bash ×2

shell-script ×1