相关疑难解决方法(0)

如何在Bash中将用户输入读入变量?

我正在尝试创建一个脚本,简化在iOS设备上创建新用户的过程.以下是分解的步骤.

# fullname="USER INPUT"
# user="USER INPUT"
# group=$user
# uid=1000
# gid=1000
# home=/var/$user
# echo "$group:*:$gid:$user" >>          /private/etc/group
# echo     "$user::$uid:$gid::0:0:$fullname:$home:/bin/sh" >> /private/etc/master.passwd
# passwd $user
# mkdir $home
# chown $user:$group $home
Run Code Online (Sandbox Code Playgroud)

如您所见,某些字段需要输入.如何在脚本中请求变量的输入?

bash shell

58
推荐指数
5
解决办法
7万
查看次数

如何在Mac OSX Mountain Lion中升级Bash并将其设置为正确的路径?

因为Mountain Lion仍然使用旧的bash 3.x,我想知道是否有一个很好的教程(或者如果有人可以在这里发布一个)如何将bash升级到最新版本.此外,知道如何设置路径以便可以在终端中使用它将会很有帮助.

提前致谢

macos bash shell terminal osx-mountain-lion

41
推荐指数
1
解决办法
2万
查看次数

Bash'read'命令不接受Mac上的-i参数.任何替代品?

我有一个bash脚本,可以在我的工作Ubuntu机器上正常工作,但是当我尝试在我的Mac OSX Lion Mountain Lion笔记本电脑上运行它时,可悲地打破了.杀死它的线是这样的:

while [[ -z "$SSHFS_PATH" ]] ; do
  read -e -p "Please enter the path on which to mount your file system: `echo -e $'\n > '`" -i "~/aws-dev" SSHFS_PATH;
done
Run Code Online (Sandbox Code Playgroud)

它抛出了这个错误:

-bash: read: -i: invalid option
read: usage: read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...]
Run Code Online (Sandbox Code Playgroud)

因此,似乎OSX版本的read命令不接受-i,用于建议默认值.为什么?有什么办法可以解决这个问题?

谢谢 :)

macos bash

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

意思是: - unix shell脚本中的这个符号

任何人都可以告诉我:-这个符号在Unix shell脚本中是什么意思

while [ ${runq:-$SLOTS} -ge $SLOTS ] 在给定的例子中

unix shell

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

Ruby:带有默认值的gets.chomp

是否有一些简单的方法如何在提供默认值的同时在 Ruby 中请求用户输入?

考虑 bash 中的这段代码:

function ask_q {
    local PROMPT="$1"
    local DEF_V="$2"
    read -e -p "$PROMPT" -i "$DEF_V" REPLY
    echo $REPLY
}

TEST=$(ask_q "Are you hungry?" "Yes")
echo "Answer was \"$TEST\"."
Run Code Online (Sandbox Code Playgroud)

你能用 Ruby 实现类似的行为gets.chomp吗?

function ask_q(prompt, default="")
    puts prompt
    reply = gets.chomp() # ???
    return reply
def

reply = ask_q("Are you hungry?", "Yes")
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过这种方式对 Ruby 中的功能进行排序复制......

def ask_q(prompt, default="")
    default_msg = (default.to_s.empty?) ? "" : "[default: \"#{default}\"]"
    puts "${prompt} ${default}"
    reply = gets.chomp()
    reply = (default.to_s.empty?) ? …
Run Code Online (Sandbox Code Playgroud)

ruby bash gets default-value

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

Bash 读取输入 - 按 Tab 键切换提示符

我有一个正在读取用户输入的脚本。这是我的代码:

if [ -z $volreadexists ]; then
        echo -e "\tThis will overwrite the entire volume (/dev/vg01/$myhost)...are you sure?"
        read REPLY
        echo
        if [[ $REPLY =~ ^[Yy]$ ]]; then
            echo -e "\t\tContinuing"
            syncvolume
        else
            echo "Fine...skipping"
        fi
    fi
Run Code Online (Sandbox Code Playgroud)

我必须使用,read REPLY因为read它本身不插入选项卡。我正在寻找类似的东西:

read -p "\tDoes this look OK? (n for No)" -n 1 -r
Run Code Online (Sandbox Code Playgroud)

\t在阅读提示上按 Tab 键。

如何向阅读提示添加选项卡?

更新:感谢@gniourf 的精彩回答!:

read -p $'\tDoes this look OK? (n for No)' -n 1 -r
Run Code Online (Sandbox Code Playgroud)

然而,我发现了一个问题。当我尝试在那里使用变量时,它不会翻译它:

read -p $'\tThis will overwrite …
Run Code Online (Sandbox Code Playgroud)

bash

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

标签 统计

bash ×5

shell ×3

macos ×2

default-value ×1

gets ×1

osx-mountain-lion ×1

ruby ×1

terminal ×1

unix ×1