相关疑难解决方法(0)

双方括号[[]]比Bash中的单方括号[]更好吗?

最近在一次代码审查中,一位同事声称该[[ ]]构造比[ ]在类似的构造中更受欢迎

if [ "`id -nu`" = "$someuser" ] ; then 
     echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)

他无法提供理由.有吗?

syntax bash if-statement

514
推荐指数
8
解决办法
20万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

检查传递的参数是否是Bash中的文件或目录

我正在尝试在Ubuntu中编写一个非常简单的脚本,它允许我传递文件名或目录,并且能够在它是文件时执行特定的操作,而当它是目录时则执行其他操作.我遇到的问题是目录名称,或者也可能是文件,名称中包含空格或其他可以逃避的字符.

这是我下面的基本代码,以及几个测试.

#!/bin/bash

PASSED=$1

if [ -d "${PASSED}" ] ; then
    echo "$PASSED is a directory";
else
    if [ -f "${PASSED}" ]; then
        echo "${PASSED} is a file";
    else
        echo "${PASSED} is not valid";
        exit 1
    fi
fi
Run Code Online (Sandbox Code Playgroud)

这是输出:

andy@server~ $ ./scripts/testmove.sh /home/andy/
/home/andy/ is a directory

andy@server~ $ ./scripts/testmove.sh /home/andy/blah.txt
/home/andy/blah.txt is a file

andy@server~ $ ./scripts/testmove.sh /home/andy/blah\ with\ a\ space.txt
/home/andy/blah with a space.txt is not valid

andy@server~ $ ./scripts/testmove.sh /home/andy\ with\ a\ space/
/home/andy with a space/ …
Run Code Online (Sandbox Code Playgroud)

bash shell

135
推荐指数
4
解决办法
21万
查看次数

测试makefile中是否存在目录

在他的回答中, @ Grundlefleck解释了如何检查目录是否存在.我尝试了一些在内部使用这个makefile如下:

foo.bak: foo.bar
    echo "foo"
    if [ -d "~/Dropbox" ]; then
        echo "Dir exists"
    fi
Run Code Online (Sandbox Code Playgroud)

运行make foo.bak(给定foo.bar存在)会产生以下错误:

echo "foo"
foo
if [ -d "~/Dropbox" ]; then
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [foo.bak] Error 2
Run Code Online (Sandbox Code Playgroud)

我做的解决方法是有一个独立的bash脚本,其中实现了测试,我从中调用了脚本makefile.然而,这听起来非常麻烦.有没有更好的方法来检查目录是否存在makefile

bash makefile

51
推荐指数
6
解决办法
6万
查看次数

检查Unix中是否存在目录(系统调用)

我无法在线找到问题的解决方案.

我想在Unix中调用一个函数,传入一个目录的路径,并知道它是否存在.opendir()如果目录不存在则返回错误,但我的目标不是实际打开,检查错误,如果没有错误则关闭它,而只是检查文件是否是目录.

有没有方便的方法呢?

c c++ unix directory exists

49
推荐指数
2
解决办法
6万
查看次数

Bash脚本,循环文件夹中的文件失败

我正在使用此bash脚本代码在一个文件夹中循环浏览某些文件(所有以MOVIE开头的文件):

for i in MY-FOLDER/MOVIE*
do
Run Code Online (Sandbox Code Playgroud)

当文件夹中有文件时,它可以正常工作.但是当没有任何内容时,它会以某种方式继续使用它认为名为MY-FOLDER/MOVIE*的文件.

我怎么能避免它进入之后的事情

do
Run Code Online (Sandbox Code Playgroud)

如果文件夹中没有任何文件?

bash

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

如何在linux中检查目录是否存在.?

给定文件路径(例如/src/com/mot),如何检查是否mot存在,如果不使用Linux或shell脚本,则创建它?

linux shell

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

如何使用bash检查OS X中是否挂载了文件路径?

如果尚未安装,我该如何执行安装?

这是在OS X 10.9上,这是我目前所拥有的:

#!/bin/bash

# Local mount point
LOCALMOUNTPOINT="/folder/share"

# Perform the mount if it does not already exist
if ...
then
/sbin/mount -t smbfs //user:password@serveraddress/share $LOCALMOUNTPOINT

else
    echo "Already mounted"
fi
Run Code Online (Sandbox Code Playgroud)

macos bash

10
推荐指数
1
解决办法
9448
查看次数

如何检查给定路径中是​​否存在目录

我正在创建一个简单的备份脚本,我想检查一个目录是否存在于给定路径中,如下所示:

fullPath=/usr/local/webapps/mydir

if mydir exists in my $fullPath

    then back it up
    else give error
fi
Run Code Online (Sandbox Code Playgroud)

我的问题是我如何制定if语句来检查$ fullPath变量中是否存在最后一个目录?只是为了澄清,对于这种情况,如果我使用/ usr/local它将是mydir它将是本地等.

提前致谢!

bash ubuntu if-statement

9
推荐指数
1
解决办法
3万
查看次数

检查目录是否存在且可访问

我想检查一个目录是否存在,它是否具有访问权限; 如果是,则执行任务.这是我写的代码,可能没有正确的语法.

你能帮我纠正一下吗?

dir_test=/data/abc/xyz
if (test -d $dir_test & test –x $dir_test -eq 0);
 then
cd $dir_test
fi
Run Code Online (Sandbox Code Playgroud)

我相信这也可以这样写.

dir_test=/data/abc/xyz
test -d $dir_test
if [ $? -eq 0 ];
then
test –x $dir_test
if [ $? -eq 0 ];
then
cd $dir_test
fi
fi
Run Code Online (Sandbox Code Playgroud)

我们怎样才能更有效地写这个?

unix linux bash ksh

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

bash中用于确定variabl $ f是否为目录的条件测试是什么?

因此,我正在浏览目录,并想测试目录的每个元素是否都是目录:

FILES=$PWD/*

for f in $FILES 
do
  if [ $f is a directory ]; then #Correct conditional needed here
    echo "Dir: $f"
  fi       

done
Run Code Online (Sandbox Code Playgroud)

我应该使用什么方法/功能来测试$ f是否是目录?

bash

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

Bash脚本目录检测和创建

我有一个bash脚本,它依赖于一组现有的文件夹,但是每次我在新机器上使用脚本时都不想手工创建文件夹.

现在我有以下内容用于目录检测和创建(取自此处):

for i in {7..0}
do
  if [ ! -d "backup.${i}" ]; then
    mkdir backup.${i}
  fi
done
Run Code Online (Sandbox Code Playgroud)

这通过'backup.7'检测并创建文件夹'backup.0'就好了,但必须有更优雅的方法来执行此操作.

bash scripting

4
推荐指数
1
解决办法
456
查看次数

标签 统计

bash ×10

linux ×3

shell ×3

unix ×3

if-statement ×2

c ×1

c++ ×1

directory ×1

exists ×1

ksh ×1

macos ×1

makefile ×1

quotes ×1

scripting ×1

syntax ×1

ubuntu ×1