欢迎各位兄弟 发布技术文章
这里的技术是共享的
shell 变量 传递到 applescrit osascript OK
要在Shell脚本中将变量传递给AppleScript,可以使用osascript
命令。osascript
命令允许您在Shell脚本中执行AppleScript代码。
以下是一个示例,演示如何将Shell变量传递给AppleScript:
bash复制代码#!/bin/bash
# 定义Shell变量 name="John Doe"
# 使用osascript命令将变量传递给AppleScript osascript -e "set myVar to \"$name\"" -e "display dialog myVar"
$local_ip="192.168.0.1"
(/usr/bin/osascript -e "set local_ip to \"$local_ip\"" -e "
display dialog local_ip ")
(/usr/bin/osascript -e "set local_ip to \"$local_ip\" " -e 'display dialog local_ip & "\nFTP服务器网络不通,请联系AAA或BBB" buttons {"OK"} default button "OK" ')
在上面的示例中,name
是一个Shell变量,它被传递给AppleScript代码。在AppleScript代码中,我们使用set
命令将Shell变量赋值给一个新的AppleScript变量myVar
。然后,我们使用display dialog
命令显示一个对话框,其中包含传递的变量的值。
请确保您的系统中安装了AppleScript支持,以便能够使用osascript
命令。
shell 变量两个多个变量传递到 applescrit osascript OK
如果您希望通过AppleScript从shell脚本传递多个变量到AppleScript,您需要确保您正确地传递了这些变量。以下是一个简单的例子来说明这一点:
假设您有一个shell脚本,该脚本将传递两个变量到AppleScript。
shell_script.sh
:
bash复制代码#!/bin/bash
# 定义两个变量 var1="Hello" var2="World"
# 调用AppleScript并传递变量 osascript -e 'on run argv set var1 to item 1 of argv set var2 to item 2 of argv display dialog var1 & " " & var2 end run' "$var1" "$var2"
在这个shell脚本中,我们定义了两个变量var1
和var2
,然后使用osascript
命令调用AppleScript,并将这两个变量作为参数传递。
运行这个shell脚本:
bash复制代码chmod +x shell_script.sh ./shell_script.sh
当您运行这个脚本时,您应该会在屏幕上看到一个弹出窗口显示“Hello World”。
这就是如何从shell脚本传递多个变量到AppleScript。您可以根据需要修改此示例来适应您的特定需求。
shell 变量两个多个变量传递到 applescrit osascript OK
要在 shell 脚本中传递多个变量给 osascript
,并使用这些变量在 AppleScript 的 display dialog
中显示信息,你需要将这些变量作为参数传递给 osascript,并在 AppleScript 中正确地引用它们。这里有一个例子:
假设你有以下的 shell 脚本(名为 shell-script.sh
):
bash#!/bin/bash # 定义一些变量 var1="Hello" var2="World" # 将变量传递给 osascript,并用 AppleScript 显示对话框 osascript -e "tell app \"System Events\" to display dialog \"$var1, $var2!\"" #这个行,
osascript -e "display dialog \"$var1, $var2!\"" #这个也行,
在这个脚本中,我们定义了两个变量 var1
和 var2
,然后将这两个变量的值通过 $var1
和 $var2
传给了 osascript
命令的 -e
参数。在 AppleScript 部分,我们使用双引号将整个字符串括起来,这样 shell 变量就会被替换为它们的值。
运行这个脚本时,它会弹出一个对话框,显示 "Hello, World!"。
请注意,在实际应用中,你可能需要根据你的具体需求来调整 shell 脚本和 AppleScript 的部分。例如,如果你需要从用户那里获取输入或者执行更复杂的逻辑,那么你可能需要扩展这个示例。
下面是自己亲自做的 OK OOK 有大用 有大大用
str="mac: ${mac},ip:${ip}"
str1="mac1: ${mac1},ip1:${ip1}"
(/usr/bin/osascript -e "display dialog \"$str \\n$str1\" buttons {\"OK\"} default button \"OK\" " )
下面也是自己亲自做的 OK OOK 有大用 有大大用
#!/bin/bash
#
host=192.168.0.24
port=22
local_ip=`ifconfig | grep 192 | cut -f2 -d' '`
local_ip="本机ip ${local_ip}"
echo $local_ip
ping -c 1 -W 2000 10.54.2.2
if [ $? != 0 ];then
echo "没有网络,请检查"
(/usr/bin/osascript -e 'display dialog "没有网络,请检查" buttons {"OK"} default button "OK" ')
exit 0
fi
nc -zvv $host $port
if [ $? != 0 ];then
echo "${local_ip}\nFTP服务器网络不通,请联系AAA或BBB"
(/usr/bin/osascript -e "display dialog \"${local_ip}\nFTP服务器网络不通,请联系aaa或bbb\" buttons {\"OK\"} default button \"OK\" ")
exit 0
fi
username=$(/usr/bin/osascript -e 'display dialog "请输入帐号" default answer "" with icon note buttons { "Continue"} default button "Continue"
set result1 to result
set the text_data to text returned of the result
set the button_data to button returned of the result1
if button_data = "Cancel" then
return ""
end if
return text_data')
password=$(/usr/bin/osascript -e 'display dialog "请输入密码" default answer "" with icon note buttons { "Continue"} default button "Continue"
set result1 to result
set the text_data to text returned of the result
set the button_data to button returned of the result1
if button_data = "Cancel" then
return ""
end if
return text_data')
/usr/bin/expect <<EOF
set timeout 4
spawn /usr/bin/sftp -P $port $username@$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$password\r"}
}
expect {
"sftp>" { send "bye\r" ;expect eof;exit 0}
}
expect {
#"password:" { send "\003";expect eof;}
"password:" {expect eof ; exit 1}
}
EOF
result=$?
if [ $result = 0 ];then
(/usr/bin/osascript -e 'display dialog "${local_ip}\n1)用户名密码正确\n2)密码在有效期内\n3)客户端ip地址已绑定到FTP服务器" buttons {"OK"} default button "OK" ')
else
(/usr/bin/osascript -e "set local_ip to \"$local_ip\"" -e "
display dialog local_ip ")
(/usr/bin/osascript -e 'display dialog "用户名密码不对\n或者密码过期\n或者客户端ip地址未绑定到FTP服务器\n请联系AAA或BBB" buttons {"OK"} default button "OK" ')
fi
shell 传递 多个 变量到 osascript NOT OK
如果你想通过shell脚本传递多个变量给osascript
来显示一个对话框(例如,在macOS中),你可以这样做。
以下是一个简单的例子,其中我们有一个shell脚本,它接受两个参数,并使用osascript
显示一个包含这两个参数的对话框:
bash复制代码#!/bin/bash
# 你的函数,它使用osascript显示对话框 function show_dialog() { osascript -e 'display dialog' "$1" & # 如果你想显示多个参数,可以使用如下的方式: # osascript -e 'display dialog' "$1" "$2" & }
# 调用函数并传递参数 show_dialog "这是第一个参数" "这是第二个参数"
在这个例子中,我们定义了一个名为show_dialog
的函数,它接受两个参数。然后,我们使用osascript
的-e
选项来执行AppleScript代码,该代码会显示一个对话框。
你可以根据需要调整这个脚本,例如,添加更多的参数或修改对话框的内容。
shell 传递 多个 变量到 osascript NOT OK
在 shell 脚本中,你可以使用以下方法将多个变量传递给 osascript
(AppleScript 的命令行接口):
使用位置参数 NOT OK
在 shell 脚本中,你可以在命令行中直接列出要传递的变量。然后在 AppleScript 中使用 {}
来获取这些参数。
示例:
bash#!/bin/bash var1="Hello" var2="World" osascript -e 'display alert "Message: {}" buttons {"OK"} default button 1 with title "{}"' -- $var1 "$var2"
这里,$var1
和 $var2
分别被替换为 "Hello" 和 "World",然后传递给 AppleScript。
使用环境变量 NOT OK
你也可以通过设置环境变量来传递变量,并在 AppleScript 中使用 environment variable
关键字来访问它们。
示例:
bash#!/bin/bash var1="Hello" var2="World" export VAR1="$var1" export VAR2="$var2" osascript -e 'display alert "Message: " & (environment variable "VAR1") & " " & (environment variable "VAR2") buttons {"OK"} default button 1 with title "Title"'
使用临时文件 NOT OK 如果变量内容复杂或者包含特殊字符,可以考虑先将变量内容写入一个临时文件,然后在 AppleScript 中读取这个文件的内容。
示例:
bash#!/bin/bash var1="Hello" var2="World" tmpfile=$(mktemp /tmp/scriptinput.XXXXXX) echo "$var1" > "$tmpfile" echo "$var2" >> "$tmpfile" osascript -e 'set var1 to (read POSIX file "/tmp/scriptinput.XXXXXX" as text)' \ -e 'set var2 to (read line 2 of POSIX file "/tmp/scriptinput.XXXXXX" as text)' \ -e 'display alert "Message: " & var1 & " " & var2 buttons {"OK"} default button 1 with title "Title"' rm "$tmpfile"
请根据你的实际需求选择合适的方法来传递变量。注意,不同的方法可能需要处理不同类型的转义和引用问题。