使用来自被调用的shell脚本(Mac终端)的“读取”

时间:2017-03-08 18:46:50

标签: bash macos shell terminal install

我目前正在为基于mac的环境构建无人参与的安装脚本。

为此,我有一系列应用程序作为PKG +许多其他设置和plist配置我正在安装/复制。如果我将它们全部放在一个bash脚本中,那么所有行都按预期工作。现在我正在清理和分离不同的任务(安装应用程序,安装打印机,网络首选项等)在单独的bash脚本中,也可能在其他一些点单独使用它们。

我现在有一组文件,例如:

  1. install.sh
  2. install_printers.sh
  3. 但是,其中一些脚本需要用户输入(例如,询问是否应安装特定的打印机)。

    这看起来如下:

    install.sh

    #!/bin/bash
    echo
    echo 1 | sudo -S sh /Volumes/install/install_printers.sh
    

    install_printers.sh

    #!/bin/bash
    echo    
    echo "Install: DE_Brother [y/n]"
    read -n 1 question
    if [ "$question" = "y" ]
    then
        echo
        lpadmin -p DE_Brother -L "DE" -E -v ipp://10.1.1.100:631/printers/PM_Brother -P /Library/Printers/PPDs/Contents/Resources/Brother.gz -o printer-is-shared=false
        cp /Volumes/install/Plist\ files/com.apple.print.custompresets.forprinter.DE-Brother.plist ~/Library/Preferences/
        echo "DE_Brother is installed"
    else
        echo
        echo "DE_Brother not installed"
    fi
    echo    
    echo "Install: DE_Brother2 [y/n]"
    read -n 1 question
    if [ "$question" = "y" ]
    then
        echo
        lpadmin -p DE_Brother2 -L "DE" -E -v ipp://10.1.1.100:631/printers/PM_Brother -P /Library/Printers/PPDs/Contents/Resources/Brother2.gz -o printer-is-shared=false
        cp /Volumes/install/Plist\ files/com.apple.print.custompresets.forprinter.DE_Brother2.plist ~/Library/Preferences/
        echo "DE_Brother is installed"
    else
        echo
        echo "DE_Brother not installed"
    fi
    

    现在,当我运行上面的“install.sh”时,我将始终获得if语句的“else”。显然,因为脚本在没有请求的用户输入的情况下继续 read -n 1 question

    那么我怎样才能在被调用的脚本中请求用户输入?

    我对这个话题很新,所以如果有其他建议/改进,请告诉我

    欢呼声 儒略

0 个答案:

没有答案