标签: assignment

如何在包含保留字符的 .desktop 文件中正确编写 Exec 键的命令?

我正在尝试为 Minecraft 制作一个 .desktop 文件。执行文件时似乎没有发生任何事情。我尝试按如下方式分配 Exec 键:

Exec= java -jar "~/.minecraft/Minecraft.jar"

Exec= java -jar "$HOME/.minecraft/Minecraft.jar"

但我不确定如何正确输入保留字符(~ 和 $)。根据 Freedesktop 的Desktop Entry Specification

如果参数包含保留字符,则必须引用该参数。

引用必须通过将参数括在双引号之间并在双引号字符、反引号字符 ("`")、美元符号 ("$") 和反斜杠字符 ("\") 之前加上一个额外的反斜杠字符来完成。在扩展域代码和将参数传递给可执行程序之前,实现必须撤消引用。

但这对我来说非常令人困惑。

quoting freedesktop .desktop assignment

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

将相同的字符串分配给多个变量

我想将包含的字符串分配$value给多个变量。

实际上,我之前给出的示例 ( var1=var2=...=$value) 并没有准确反映我想要的内容。到目前为止,我发现了这一点,但它仅适用$value于整数:

$ let varT=varz=var3=$value
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

bash assignment

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

在不使用引号的情况下在 shell 中将一个变量分配给另一个变量有什么问题吗?

这个问题是关于一个变量的全部内容分配给另一个变量。

使用变量(发送至echo等)

赋值期间没有进行参数扩展

我的问题也仅与 POSIX shell 有关(此处未使用数组)。

error="You have an error in your input"

newVar="$error"
# vs.
newVar=$error
#         ?
#         ??This assignment is the question. It doesn't seem that quotes are
#           needed here in order to assign the entire contents of $error to
#           a new variable.

#                 ??(But quotes are required when they're used.)
#                 ?
printf "%s\n" "$error"
# => You have an error in your …
Run Code Online (Sandbox Code Playgroud)

shell posix quoting assignment

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

为什么 foo=bar 与 foo= bar 不同?

这个命令中的空格的解释是什么foo= bar

为什么foo=barfoo= bar解释不同

示例(Ubuntu bash)

developer@1604:~$ foo=bar
developer@1604:~$ foo= bar
The program 'bar' is currently not installed. You can install it by typing:
sudo apt install bar
Run Code Online (Sandbox Code Playgroud)

shell variable assignment

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

使用多行分配变量

我有一个功能

f(){
    echo 777
}
Run Code Online (Sandbox Code Playgroud)

和一个变量,我将函数的“返回值”分配给它。

x=$(f)
Run Code Online (Sandbox Code Playgroud)

非常简洁!然而,在我的实际代码中,变量名和函数名要长得多,而且函数也吃位置参数,所以上面的简洁行变得很长。因为我喜欢保持整洁,所以我想把上面的代码分成两行。

x=\
$(f)
Run Code Online (Sandbox Code Playgroud)

仍然有效!但是:保持整洁也意味着尊重缩进,这样就可以得到类似的东西

if foo
    x=\
    $(f)
fi
Run Code Online (Sandbox Code Playgroud)

由于空格而不再起作用!有什么好的解决方法吗?

bash newlines assignment

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

定义带引号和不带引号的变量有什么区别?

如果我用引号定义一个变量:

TEMP="~/Dropbox"
Run Code Online (Sandbox Code Playgroud)

然后

ls $TEMP
Run Code Online (Sandbox Code Playgroud)

不会工作,而是

echo $TEMP | ls
Run Code Online (Sandbox Code Playgroud)

作品。

为了获得相同的结果,我还可以定义不带引号的变量,例如:

TEMP=~/Dropbox
Run Code Online (Sandbox Code Playgroud)

这样做我可以简单地输入

ls $TEMP
Run Code Online (Sandbox Code Playgroud)

我对它们之间的区别感到很困惑,我想知道我应该在何时何地分别使用这两种定义?

bash quoting variable assignment tilde

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

为什么在赋值`foo=$bar` 中不需要双引号`$bar`?

来自https://unix.stackexchange.com/a/32227/674

不使用双引号是安全的主要地方是:

  • 在赋值中:(foo=$bar但请注意,您确实需要export "foo=$bar"在数组赋值中或数组赋值中 使用双引号array=("$a" "$b"));
  1. 这是否意味着不需要$bar在赋值中双引号foo=$bar?为什么?

  2. 为什么我们需要export "foo=$bar"像这样的数组赋值中的双引号array=("$a" "$b")

谢谢。

bash quoting assignment

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

在 for 循环之前临时更改 IFS

我知道SHELL允许在命令之前立即进行变量赋值,这样IFS=":" read a b c d <<< "$here_string"有效......

我想知道的是,当使用诸如循环之类的复合语句完成时,这样的赋值是否不起作用?我尝试了类似的方法,IFS=":" for i in $PATH; do echo $i; done但导致语法错误。我总是可以做类似的事情oldIFS="$IFS"; IFS=":"; for....; IFS="$oldIFS",但我想知道是否有任何方法可以使此类内联赋值适用于for循环等复合语句?

bash for assignment

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

不同的命令输出

在此处输入图片说明

我用可变主机输入了相同的命令。在第二次我在主机、= 和 $ 之间输入了空格。为什么它试图连接到服务器?另外,当我像 $(host name) 这样写时,我收到错误 Host = not found: 3(NXDOMAIN) centos

shell bash assignment

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

变量中的输出不应被解释为命令

所以这个问题已经被问过几次了,但答案似乎对我不起作用。所以我有这个简单的脚本

#!/bin/bash
charon_id = $(pidof charon)
kill -1 $charon_id
Run Code Online (Sandbox Code Playgroud)

控制台说charon_id: command not found*

我尝试了不同的版本,"$( ),;后面,甚至是$(... 2>&1)我在某处看到的。到目前为止没有任何帮助。建议?

* 从控制台语言翻译成英文

shell-script variable assignment

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

Bash - 设置一个变量

我需要在我的 bash 脚本中设置一个变量

#!/usr/bin/env bash

GITNAME= git config --global user.name
echo " $GITNAME "
Run Code Online (Sandbox Code Playgroud)

但它似乎不是这样工作的。

它是如何工作的?

bash assignment

0
推荐指数
2
解决办法
1706
查看次数

分配给 bash 脚本中的变量

我有以下脚本,我尝试创建一个空文本文件。我试过touch,我试过echo -n >——他们都失败了。

#!/bin/bash

set filename_result="contents"

echo "filename=$filename_result" # Shows: filename=

rm -f "$filename_result".json

touch $filename_result # Error: usage: touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...
# Note that `% touch myfile` works fine on the command line

touch -- "$filename_result" # Error: touch: : No such file or directory

echo -n > "$filename_result" # Error: No such file or directory

echo "[" >> "$filename_result"

for file in *json
do
    echo "examining file: …
Run Code Online (Sandbox Code Playgroud)

shell bash variable assignment

0
推荐指数
2
解决办法
1948
查看次数