shell 如何在下面交互脚本中设置变量非交互模式

olqngx59  于 2023-01-05  发布在  Shell
关注(0)|答案(1)|浏览(153)
#!/bin/bash



lockfile="/opt/puppetlabs/puppet/cache/state/agent_disabled.lock"
set -x
set -e

user=$(w -h | awk '{print $1}')

dateNow=$(date '+%F')
dateDefault=$(date '+%F' --date="next-day")

IFS= read -r -p "Enter short message why are you disbaling agent: " comment

IFS= read -r -p "Enter date(yyyy-mm-dd) till agent will be disabled: " dateExpiry

if [[ -z "${dateExpiry}" ]]; then
   printf '%s\n' "No Date entered - Default date set next day"
   dateExpiry="$dateDefault"
   fi

if [[ -z "${comment}" ]]; then
   printf '%s\n' "No input entered - Disabling message is not set"
   exit 1
else
   puppet agent --disable "$user:$dateExpiry:$comment"
   if [ -f "$lockfile" ]; then
    echo "puppet agent is disabled"
   fi
fi

在上面的脚本中,如何在执行脚本设置变量(注解和日期到期)时使其成为非交互式的一行命令。
谢谢!
预期上述脚本为非交互式,并在执行脚本时设置变量。

mrfwxfqh

mrfwxfqh1#

添加超时

IFS= read -t 3 -r -p "Enter short message why are you disbaling agent: " comment

或者类似这样的东西来设置默认值

if ! IFS= read -t 3 -r -p "Enter short message why are you disbaling agent: " comment
then
    comment='Default'
fi

更新

如果要提供值,请在不更改脚本的情况下执行以下操作

script.sh <<!
My comment
2023-01-04
!

这样脚本就可以读取它们。

相关问题