相关疑难解决方法(0)

为什么不带引号的带空格的参数扩展在双括号“[[”内起作用,而在单括号“[”内不起作用?

我对使用单括号或双括号感到困惑。看看这段代码:

dir="/home/mazimi/VirtualBox VMs"

if [[ -d ${dir} ]]; then
    echo "yep"
fi
Run Code Online (Sandbox Code Playgroud)

尽管字符串包含空格,但它工作得很好。但是当我将其更改为单括号时:

dir="/home/mazimi/VirtualBox VMs"

if [ -d ${dir} ]; then
    echo "yep"
fi
Run Code Online (Sandbox Code Playgroud)

它说:

./script.sh: line 5: [: /home/mazimi/VirtualBox: binary operator expected
Run Code Online (Sandbox Code Playgroud)

当我将其更改为:

dir="/home/mazimi/VirtualBox VMs"

if [ -d "${dir}" ]; then
    echo "yep"
fi
Run Code Online (Sandbox Code Playgroud)

它工作正常。有人可以解释发生了什么吗?什么时候应该在变量周围分配双引号,"${var}"以防止空格引起的问题?

bash ksh quoting test

106
推荐指数
3
解决办法
4万
查看次数

手动运行 cron 作业/模拟运行 cron 作业?

我想在执行任务后测试 cron 的邮件内容和类似的工作。有没有更优雅的方法来测试这个,然后设置一个 cron 作业每隔几秒钟运行一次?那么,有什么方法可以模拟 cron 作业的执行/手动启动 cron 作业,但其行为与 cron 自动运行时的行为相同?

cron

15
推荐指数
1
解决办法
5万
查看次数

尝试从另一个 sh 文件执行 sh 文件时出现问题

我有以下脚本:

#!/bin/bash

if test -f "/path/pycharm.sh"; then sh ./pycharm.sh;
fi
Run Code Online (Sandbox Code Playgroud)

我正在尝试从 bash 文件运行pycharm.sh,并且我仔细查看了该文件所需的所有权限。不幸的是,每次我运行它时,我都会得到这个:

无法打开 ./pycharm.sh

bash shell-script

4
推荐指数
3
解决办法
2万
查看次数

标签 统计

bash ×2

cron ×1

ksh ×1

quoting ×1

shell-script ×1

test ×1