相关疑难解决方法(0)

通过 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
查看次数

Bash中的cURL - 在单引号之间传递变量

我试图通过命令行将参数传递给cURL,这样:

curl -s -X POST -H "Content-Type: text/xml" -H "Cache-Control: no-cache" -d '<Data Token="someToken" Name='"$appName"' ID='"$someVar"' ParseAppID='"$someVar"' ParseRESTKey='"$someVar"' AndroidPackage='"$someVar"' Version="1"></Data>' 'https://prefix.something.com/somePath?InputType=Xml'
Run Code Online (Sandbox Code Playgroud)

(此行实际上是从Postman应用程序中提取的).

我用Google搜索了这个问题,发现了许多对我不起作用的解决方案(链接是过去的问题......):

  1. 我尝试通过结束单引号来隔离变量,这样:'before...'"${someVar}"'...after...'.无法完成请求.
  2. 我尝试使用文件传递变量(-d @fileName).无法发布.
  3. 我尝试<Data>双引号替换令牌周围的单引号 - 但命令显然不能接受这样的替换.

我得到的错误是<Error></Error>或者The server encountered an error and could not complete your request.

有没有机会存在其他解决方案?以前有人遇到过这样的问题吗?

我会很乐意提供任何帮助.

bash shell curl

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

用 cURL 命令中的变量替换字符串

我正在尝试尽可能简单地自动化 GroupMe 机器人。从命令行发送消息的一种简单方法是使用以下命令:

curl -d '{"text" : "Your message here", "bot_id" : "this_is_a_secret_string"}' https://api.groupme.com/v3/bots/post
Run Code Online (Sandbox Code Playgroud)

在 Shell 脚本中,我想替换"Your message here"var,其中var被设置为来自不同命令的输出。这可能吗?

我用它替换了“您的消息”的事情不起作用:

var
$var
(var)
$(var)
{var}
${var}
Run Code Online (Sandbox Code Playgroud)

双引号 ("") 内的任何内容都被视为字符串,因此在这些方面没有做太多尝试。

linux shell automation curl groupme

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

Shell:将变量插入命令中

我试图找到一种方法,在此命令中使用变量将 -10 替换为 n_days var:

   n_days= -10
   date_prefix=$(date -d '-10 day' +%Y/%m/%d)
Run Code Online (Sandbox Code Playgroud)

我尝试了这种方法,但没有成功:

   date_prefix=$(date -d '${n_days} day' +%Y/%m/%d)
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell date

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

字符串变量插值

我编写了这个脚本:

for i in `seq 1 $1`; do
        timestamp=$(uuidgen)
        cat $2.json | jq '.transactionId = "$timestamp"' > $3/$timestamp.json
done
Run Code Online (Sandbox Code Playgroud)

我的问题是,jq '.transactionId = "$timestamp"'因为文件的内容是:

{
  "transactionId": "$timestamp"
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

bash sh jq

-1
推荐指数
1
解决办法
98
查看次数

标签 统计

bash ×4

linux ×3

shell ×3

curl ×2

automation ×1

date ×1

groupme ×1

jq ×1

opensuse ×1

sh ×1

ssh ×1

unix ×1