我正在做一个bash脚本来自动化一些常见的任务,但我有一些问题,我需要一些帮助。 这是我正在谈论的脚本:
#!/usr/bin/env bash PS3='Please enter your choice: ' options=("Prepare environment" "Create new group" "Add users to group" "Change directory ownership" "Change directory permissions" "Quit") select opt in "${options[@]}" do case $opt in "Prepare environment") read -e -p "Enter the work directory: " -i "/var/www/html/" directory cd directory echo "Updating BOWER..." npm -g update bower echo "Updating COMPOSER..." composer self-update read -e -p "Enter the environment: " -i "prod" environment if [environment eq prod] then git fetch --all git reset --hard origin/master git pull composer install --no-dev --optimize-autoloader php app/console cache:clear --env=prod --no-debug else read -e -p "Enter the environment type: " -i "local" envtype if [envtype eq local] then composer update php app/console cache:clear --env=dev php app/console cache:warmup else git fetch --all git reset --hard origin/master git pull composer update php app/console cache:clear --env=dev php app/console cache:warmup fi fi echo "Cleaning the house and updating libraries..." bower cache clean --allow-root bower prune --allow-root bower install --allow-root bower update --allow-root ;; "Create new group") read -e -p "Enter the group name: " -i "www-pub" groupname groupadd groupname echo "You have added a new group: " groupname ;; "Add users to group") read -e -p "Enter the group name: " -i "www-pub" groupname loop=true # "true" is a command while true; do read -p "enter username: " username [[ -z $username ]] && break usermod -a -G groupname username # add user to group echo "You have added: " username " to group: " groupname done ;; "Change directory ownership") read -e -p "Enter the group name: " -i "www-pub" "Enter the directory: " -i "/var/www/html" groupname directory chown -R root:groupname directory echo "You have changed the ownership for: " directory " to root:" groupname ;; "Change directory permissions") read -e -p "Enter the directory: " -i "/var/www/html" "Enter the directtory permissions (type -d) : " -i "2775" "Enter the directtory files (type -f) : " -i "0664" directory folder files echo "Setting permissions " folder " to " directory find directory -type d -print0 | xargs -0 chmod permissions echo "Setting permissions " files " to " directory " files" find directory -type f -print0 | xargs -0 chmod files ;; "Quit") break ;; *) echo invalid option;; esac done
任何时候我运行脚本我得到这个输出:
root@test-webserver:/var/www/sis-php-source# /home/script.sh 1) Prepare environment 4) Change directory ownership 2) Create new group 5) Change directory permissions 3) Add users to group 6) Quit Please enter your choice: 1 Enter the work directory: /var/www/sis-php-source/ /home/script.sh: line 10: cd: directory: No such file or directory Updating BOWER... Updating COMPOSER... You are already using composer version 07c644ac229a21df80180598d8bb9aaba232eecb. Enter the environment: prod /home/script.sh: line 20: [environment: command not found Enter the environment type: local
为什么cd命令失败? 为什么environment脚本尝试执行environment作为命令,如果它是一个inputvariables? 可以给我一些帮助吗?
在bash中,你得到$directoryvariables的值 。 手册中的所有细节。
除非你知道什么时候离开报价,你应该总是引用"$variable"扩展 。
此外, [...]不是语法, [实际上是一个命令 ( test命令的别名)。 命令必须与空格分隔。
if [ "$environment" = prod ]
看到: