相关疑难解决方法(0)

Bash中单引号和双引号之间的区别

在Bash中,单引号('')和双引号("")之间有什么区别?

syntax bash shell quotes

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

使用Bash时需要转义哪些字符?

是否有任何需要在Bash中转义的完整字符列表?可以用它来检查sed吗?

特别是,我正在检查是否%需要转义.我试过了

echo "h%h" | sed 's/%/i/g'
Run Code Online (Sandbox Code Playgroud)

工作得很好,没有逃脱%.这是否意味着%不需要逃脱?这是检查必要性的好方法吗?

而更普遍的:它们是相同的字符,以逃避shellbash

unix bash shell escaping special-characters

173
推荐指数
7
解决办法
29万
查看次数

何时在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中的带引号的字符串中使用环境变量

我在bash脚本中尝试了以下各种形式:

#!/bin/bash
svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
Run Code Online (Sandbox Code Playgroud)

但我无法获得正确扩展COLUMNS环境变量的语法.

我尝试了以下各种形式:

svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS'
Run Code Online (Sandbox Code Playgroud)

svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}'
Run Code Online (Sandbox Code Playgroud)

eval svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS"
Run Code Online (Sandbox Code Playgroud)

建议?

bash environment quotes

82
推荐指数
4
解决办法
15万
查看次数

如何在Bash参数中保留引号?

我有一个Bash脚本,我想在传递的参数中保留引号.

例:

./test.sh this is "some test"
Run Code Online (Sandbox Code Playgroud)

然后我想使用这些参数,并重用它们,包括整个参数列表的引号和引号.

我尝试使用\"$@\",但删除了列表中的引号.

我该如何做到这一点?

bash quotes

69
推荐指数
10
解决办法
7万
查看次数

在 GitHub 操作中评论拉取请求

我正在尝试从 GitHub 操作的拉取请求中插入常规评论。我似乎无法正确理解。Octokit 是底层库,允许您为PR创建reviewComments,但那些指的是提交,这不是我想要的,我想要一个简单的评论。我想我可以只使用octokit.issues.createComment. 但是,这似乎不起作用。这是代码

import * as core from '@actions/core';
const {GitHub, context} = require('@actions/github')
const parse = require('parse-diff')

async function run() {
    try {
        // get information on everything
        const token = core.getInput('github-token', {required: true})
        const github = new GitHub(token, {} )
        console.log( context )
        const PR_number = context.payload.pull_request.number

        // Check if the body contains required string
        const bodyContains = core.getInput('bodyContains')

        if ( context.payload.pull_request.body.indexOf( bodyContains) < 0  ) {
            core.setFailed("The body of the …
Run Code Online (Sandbox Code Playgroud)

github github-api

8
推荐指数
4
解决办法
5992
查看次数

bash如何处理嵌套引号?

我需要使用如下语法运行命令:
runuser -l userNameHere -c '/path/to/command arg1 arg2'

不幸的是,我必须'在命令本身中嵌入其他字符,我不能告诉bash正确解释它们.我想要运行的命令实际上是:

runuser -l miner -c 'screen -S Mine -p 0 -X eval 'stuff "pwd"\015''

不幸的是,bash似乎正在击中第二个'并且呕吐.这是错误:
-bash: screen -S Mine -p 0 -X eval stuff: No such file or directory,显然它没有超越'.

如何将其作为一个命令嵌套?谢谢!

linux bash quotes command-line gnu-screen

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

在 bash 中将 Bearer 令牌作为变量传递

我正在尝试传递不记名令牌(变量 $token)以通过curl 命令调用作业。但是 -H 之后的单引号不允许变量 $token 的值传递给curl 命令。

curl -X POST 'https://server.domain.com/v2/jobs/28723316-9373-44ba-9229-7c796f21b099/runs?project_id=aff59748-260a-476e-9578-b4f4a93e7a92' -H 'Content-Type: application/json' -H 'Authorization: Bearer $token  -d { "job_run": {} }'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

{“code”:400,“error”:“错误请求”,“reason”:“承载令牌格式无效。预期:'Bearer'。收到:'Bearer $token -d {“job_run”:{} }' .","message":"承载令牌无效。"}

我尝试使用变量 $token 添加转义字符:

curl -X POST 'https://server.domain.com/v2/jobs/28723316-9373-44ba-9229-7c796f21b099/runs?project_id=aff59748-260a-476e-9578-b4f4a93e7a92' -H 'Content-Type: application/json' -H 'Authorization: Bearer "\$token\"  -d { "job_run": {} }'
Run Code Online (Sandbox Code Playgroud)

我收到相同的错误:{“code”:400,“error”:“错误请求”,“reason”:“承载令牌格式无效。预期:'承载'。收到:'承载“\ $令牌\” - d { "job_run": {} }'.","message":"承载令牌无效。"}

我也尝试了双引号,已经几个小时了,我无法提取单引号内的变量值 $token。

有人可以帮忙并给我正确的语法吗?

提前致谢

bash curl

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

如何将 bash 变量传递给 JSON

我正在尝试编写一个示例脚本,在其中生成“student-101...student-160”等名称。我需要发布 JSON 数据,当我这样做时,我收到 JSON 解析错误。

这是我的脚本:

name="student-10"

for i in {1..1}
do
    r_name=$name$i
    echo $r_name
    curl -i -H 'Authorization: token <token>' -d '{"name": $r_name, "private": true}' "<URL>" >> create_repos_1.txt
    echo created $r_name
done
Run Code Online (Sandbox Code Playgroud)

我总是收到"Problems parsing JSON"错误。我尝试过各种引号组合等,但似乎没有任何效果!

我究竟做错了什么?

bash json curl github

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

通过 ssh 在返回的文本中保留 '\n' 换行符

如果我在本地命令行中使用 grep 和 sort 等执行 find 命令,我会得到如下返回的行:

# find ~/logs/ -iname 'status' | xargs grep 'last seen' | sort --field-separator=: -k 4 -g
0:0:line:1
0:0:line:2
0:0:line:3
Run Code Online (Sandbox Code Playgroud)

如果我通过 ssh 执行相同的命令,则返回的文本将不带换行符打印,如下所示:

# VARcmdChk="$(ssh ${VARuser}@${VARserver} "find ~/logs/ -iname 'status' | xargs grep 'last seen' | sort --field-separator=: -k 4 -g")"
# echo ${VARcmdChk}
0:0:line:1 0:0:line:2 0:0:line:3
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么 ssh 正在清理返回的文本,以便将换行符转换为空格。我还没有尝试输出到文件,然后使用 scp 将其拉回来。似乎很浪费,因为我只想在本地查看远程结果。

linux ssh bash opensuse

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