Osascript "text returned of" 输入不包含空格
Osascript "text returned of" input does not include whitespace
我有以下用于在 macOS 上创建新用户的脚本:
#!/bin/bash
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
consoleUser() {
echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ && ! /loginwindow/ { print }'
}
displayfortext() { # : message : default text
message=${1:-"Message"}
defaultvalue=${2:-"default value"}
user=$(consoleUser)
if [[ $user != "" ]]; then
uid=$(id -u "$user")
launchctl asuser $uid /usr/bin/osascript <<-EndOfScript
text returned of ¬
(display dialog "$message" ¬
default answer "$defaultvalue" ¬
buttons {"OK"} ¬
default button "OK")
EndOfScript
else
exit 1
fi
}
realname=$(displayfortext "Enter the real Name (e.g. John Doe)" "John Doe")
username=$(displayfortext "Enter the Username (e.g. john.doe)" "john.doe")
sudo dscl . -create /Users/$username RealName $realname #Set Real Name (e.g. John Doe)
现在,在最后一个 sudo 命令(以及我遗漏的其他几个命令)之后,用户已成功创建。问题是,用户名 (John Doe) 只有 "John",空白后面的所有内容都消失了。
有人知道如何解决这个问题吗?我不想在 John 和 Doe 之间添加另一个字符(不像 John_Doe)它必须是空格(公司政策)。
bash 打破了白色 space 的争论。因此,如果 realname
包含一个白色 space,其中的单个单词将成为两个不同的参数。将参数引用为 "$realname"
以避免这种情况。
我有以下用于在 macOS 上创建新用户的脚本:
#!/bin/bash
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
consoleUser() {
echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ && ! /loginwindow/ { print }'
}
displayfortext() { # : message : default text
message=${1:-"Message"}
defaultvalue=${2:-"default value"}
user=$(consoleUser)
if [[ $user != "" ]]; then
uid=$(id -u "$user")
launchctl asuser $uid /usr/bin/osascript <<-EndOfScript
text returned of ¬
(display dialog "$message" ¬
default answer "$defaultvalue" ¬
buttons {"OK"} ¬
default button "OK")
EndOfScript
else
exit 1
fi
}
realname=$(displayfortext "Enter the real Name (e.g. John Doe)" "John Doe")
username=$(displayfortext "Enter the Username (e.g. john.doe)" "john.doe")
sudo dscl . -create /Users/$username RealName $realname #Set Real Name (e.g. John Doe)
现在,在最后一个 sudo 命令(以及我遗漏的其他几个命令)之后,用户已成功创建。问题是,用户名 (John Doe) 只有 "John",空白后面的所有内容都消失了。
有人知道如何解决这个问题吗?我不想在 John 和 Doe 之间添加另一个字符(不像 John_Doe)它必须是空格(公司政策)。
bash 打破了白色 space 的争论。因此,如果 realname
包含一个白色 space,其中的单个单词将成为两个不同的参数。将参数引用为 "$realname"
以避免这种情况。