相关疑难解决方法(0)

我刚刚分配了一个变量,但echo $ variable显示了其他内容

以下是一系列echo $var可以显示与刚刚分配的值不同的值的情况.无论指定的值是"双引号","单引号"还是不引用,都会发生这种情况.

如何让shell正确设置我的变量?

星号

预期的输出是/* Foobar is free software */,但我得到一个文件名列表:

$ var="/* Foobar is free software */"
$ echo $var 
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Run Code Online (Sandbox Code Playgroud)

方括号

期望值是[a-z],但有时我会得到一个字母!

$ var=[a-z]
$ echo $var
c
Run Code Online (Sandbox Code Playgroud)

换行(换行符)

预期值是一个单独的行列表,但所有值都在一行!

$ cat file
foo
bar
baz

$ var=$(cat file)
$ echo $var
foo bar baz
Run Code Online (Sandbox Code Playgroud)

多个空间

我期望一个精心对齐的表头,但是多个空格要么消失要么折叠成一个!

$ var="       title     |    count"
$ echo $var
title | count
Run Code Online (Sandbox Code Playgroud)

标签

我期望两个制表符分隔值,但我得到两个空格分隔值!

$ …
Run Code Online (Sandbox Code Playgroud)

bash shell sh quoting

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

什么时候应该双引号参数扩展?

说我有一个变量x。扩展时,我应该使用$x还是"$x"

(这旨在作为围绕无引号参数扩展的任何问题的规范重复。)

bash sh

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

在Bash函数中使用所有参数的子范围

我在Bash脚本中有这个功能:

comp() {
    rsync -v --archive $1/ $TMP/$2 $3 $4 $5 $6 $7 $8 $9
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在做一些特殊的论点$1$2.然后我匆匆将其余的所有其余部分追加到命令的末尾.他们去了$9,但事实上所有都应该附加.

必须有一个更简单的方法吗?

bash bash-function

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

如何删除第一个 bash 参数并将其他参数传递给另一个命令?

在 bash 中$@包含用于调用脚本的所有参数,但我正在寻找一种解决方案来删除第一个

./wrapper.sh foo bar baz ...:

 #!/bin/bash

 # call `cmd` with bar baz ... (withouyt foo one)
Run Code Online (Sandbox Code Playgroud)

我只想打电话 cmd bar baz ...

bash parameter-passing

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

标签 统计

bash ×4

sh ×2

bash-function ×1

parameter-passing ×1

quoting ×1

shell ×1