gpt4 book ai didi

python - 如果输出有字符,我需要运行 bash 命令;如果输出为空,我需要运行其他命令

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:39 25 4
gpt4 key购买 nike

我有一个挂载脚本,当 Python 命令输出中包含字符时我需要运行一个命令,如果输出为空则运行其他命令。

例子:

## define a function that launched the zenity username dialog
get_username(){
zenity --entry --width=300 --title="Mount $MOUNTDIR" --text="Username:"
}
# define a function that launched the zenity password dialog
get_password(){
zenity --entry --width=300 --title="Mount $MOUNTDIR" --text="Password:" --hide-text
}

# attempt to get the username and exit if cancel was pressed.
wUsername=$(get_username) || exit

# if the username is empty or matches only whitespace.
while [ "$(expr match "$wUsername" '.')" -lt "1" ]; do
zenity --error --title="Error in username!" --text="Please check your username! Username field can not be empty!" || exit
wUsername=$(get_username) || exit
done

wPassword=$(get_password) || exit

while [ "$(expr match "$wPassword" '.')" -lt "1" ]; do
zenity --error --title="Error in password!" --text="Please check your password! Password field can not be empty!" || exit
wPassword=$(get_password) || exit
done

Save_pwd=$(python -c "import keyring; keyring.set_password('My namespace', 'wUsername', '$wPassword')")

Get_wPassword=$(python -c "import keyring; keyring.get_password('My namespace', '$wUsername')")

echo $Get_wPassword
# mount windows share to mountpoint
#sudo mount -t cifs //$SERVER/$SHARE ${HOME}/${DIRNAME} -o username=${wUsername},password=${Get_wPassword},domain=${DOMAIN}

# show if mounting was OK or failed
#if [ $? -eq 0 ]; then
# zenity --info --title="Mounting public share succeeded!" --text="Location Documents/Shares/public!"
#else
# zenity --error --title="Mounting public did not succed!" --text="Please contact system administrator!"
#fi

现在在此脚本中,我需要先运行 zenity 用户名输入。一旦运行,Python $Get_wPassword 将运行,一旦它给出非空输出,它将使用从 < 获取的用户名和密码运行 mount 命令strong>$Get_wPassword。如果 $Get_wPassword 为空,那么我还需要使用 $Save_pwdmount 命令运行密码输入,以便将密码保存到 key 环,下次脚本运行时,它会从那里获取密码。

我怎样才能做到这一点?使用while 循环?如果是的话,你能举一些例子吗?我是脚本新手。

最佳答案

据我了解,如果名为 Get_wPassword 的 shell 变量非空,您需要一些命令,如果它为空,则需要另一个命令。幸运的是,有一个简单的空字符串 shell 测试:

if [ -n "$Get_wPassword" ]
then
CommandIfNotEmpty
else
CommandIfEmpty
fi

[ -n somestring ] 如果 somestring 的长度非零,则返回 true,如果字符串为空,则返回 false。有关详细信息,请参见 man bash

猜测一下你真正想做什么,考虑:

if [ -n "$Get_wPassword" ]
then
if sudo mount -t cifs //$SERVER/$SHARE ${HOME}/${DIRNAME} -o username=${wUsername},password=${Get_wPassword},domain=${DOMAIN}
then
zenity --info --title="Mounting public share succeeded!" --text="Location Documents/Shares/public!"
else
zenity --error --title="Mounting public did not succed!" --text="Please contact system administrator!"
fi
else
echo "Password was empty..."
fi

关于python - 如果输出有字符,我需要运行 bash 命令;如果输出为空,我需要运行其他命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23799219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com