相关疑难解决方法(0)

如何使用Bash检查文件是否包含特定字符串

我想在bash中检查文件是否包含特定字符串.我用过这个脚本,但它不起作用:

 if [[ 'grep 'SomeString' $File' ]];then
   # Some Actions
 fi
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?

bash shell grep

237
推荐指数
8
解决办法
37万
查看次数

从Bash函数返回一个布尔值

我想编写一个bash函数来检查文件是否具有某些属性并返回true或false.然后我可以在我的脚本中使用它"if".但是我该怎么回事呢?

function myfun(){ ... return 0; else return 1; fi;}
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

if myfun filename.txt; then ...
Run Code Online (Sandbox Code Playgroud)

当然这不起作用.如何实现这一目标?

bash shell boolean

186
推荐指数
8
解决办法
18万
查看次数

从shell脚本中的被调用函数返回值

我想从shell脚本中调用的函数返回值.也许我错过了语法.我尝试使用全局变量.但这也行不通.代码是:

lockdir="somedir"
test() {
    retval=""

    if mkdir "$lockdir"
        then    # Directory did not exist, but it was created successfully
            echo >&2 "successfully acquired lock: $lockdir"
            retval="true"
        else
            echo >&2 "cannot acquire lock, giving up on $lockdir"
            retval="false"
    fi
    return retval
}


retval=test()
if [ "$retval" == "true" ]
    then
        echo "directory not created"
    else
        echo "directory already created"
fi
Run Code Online (Sandbox Code Playgroud)

shell return-value

114
推荐指数
4
解决办法
32万
查看次数

如何在Bash或UNIX shell中检查字符串中的第一个字符?

我在UNIX中编写脚本,我必须检查字符串中的第一个字符是否为"/",如果是,则为branch.

例如,我有一个字符串:

/some/directory/file
Run Code Online (Sandbox Code Playgroud)

我希望这返回1,并且:

server@10.200.200.20:/some/directory/file
Run Code Online (Sandbox Code Playgroud)

返回0.

unix string bash character exitstatus

62
推荐指数
4
解决办法
10万
查看次数

在git hook中获取提交消息

我想在git commit之前检查提交消息.我使用预提交钩子来做到这一点,但无法在.git/pre-commit脚本中找到获取提交消息的方法.我怎么能得到它?

git hook

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

如何从提交哈希中告诉git branch name?

我有一个bash脚本,它接受一个分支名称(例如,"master"或"feature/foo")或提交哈希(例如"1234abcd")的字符串.

我已经检出了存储库,所以我可以调用git.

确定字符串是分支名称还是提交哈希的最佳方法是什么?

#!/bin/bash
commit_or_branch="$1"
cd /path/to/my_repo
git fetch
if <is_branch $commit_or_branch>
then
    echo "it's a branch"
else
    echo "it's a commit"
fi
Run Code Online (Sandbox Code Playgroud)

git bash

10
推荐指数
2
解决办法
6029
查看次数

bash printf文字逐字字符串

为了使我的代码可移植,我尝试使用printf而不是echo.但是之后

printf "-dogs-cats" 
Run Code Online (Sandbox Code Playgroud)

返回错误.本案的解决方法是:

printf "-";printf "dogs-cats"
Run Code Online (Sandbox Code Playgroud)

但是有一个通用的,可移植的命令(或一个选项printf),它将打印任意字符串作为文字/逐字,而不是尝试将字符串解释为格式?

我在BSD UNIX(在Mac上)工作,但我的目标是在其他UNIX风格中也可以使用的代码.

unix bash printf bsd verbatim

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

检查参数是否与具有两个可能值的正则表达式不匹配?

这是我试图在我的 bash 脚本之一中执行的操作。

如果SERVER_ENV不是PRODTEST,则脚本必须退出。

check-server-env() {
  local SERVER_ENV="$1"
  if ! [[ "$SERVER_ENV"^^ =~ ^(TEST|PROD)$ ]]; then
    error "$(highlight "$SERVER_ENV")" " does not exist."
    echo "Exiting script..."
    echo ""
    exit 0
  fi
}
Run Code Online (Sandbox Code Playgroud)

我打电话script.sh TEST

SERVER_ENV=$1

check-server-env $SERVER_ENV
Run Code Online (Sandbox Code Playgroud)

这是我打电话的方式。但它不起作用。我究竟做错了什么?

regex bash sh

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

bash:检查字符串是否以“ / *”开头

在bash脚本中,我需要检查字符串是否$HEADER以字符序列“ / *”开头。我正在尝试:

if [ $(echo $HEADER | cut -c 1-2) = '/*' ]
Run Code Online (Sandbox Code Playgroud)

它没有按预期工作。似乎将字符串与根目录的文件列表进行了比较。

如何保护从外壳解释的字符/和*?

用反斜杠保护字符也不起作用。

bash shell

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

标签 统计

bash ×7

shell ×4

git ×2

unix ×2

boolean ×1

bsd ×1

character ×1

exitstatus ×1

grep ×1

hook ×1

printf ×1

regex ×1

return-value ×1

sh ×1

string ×1

verbatim ×1