相关疑难解决方法(0)

BASH中的数字格式与千位分隔符

我有一个号码12343423455.23353.我想用千位分隔符格式化数字.所以输出就是 12,343,423,455.23353

unix bash localization number-formatting

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

在同一子shell中分配和使用变量

我正在做一些非常简单的事情:v=5 echo "$v"并期望它打印出来5.但事实并非如此.刚刚设置的值不适用于下一个命令.

我最近了解到 " 在大多数shell中,管道的每个命令都在一个单独的SubShell中执行 ".但是,在这种情况下,两个命令都在同一个子shell中执行.

为什么会这样?有没有办法让这个工作?

完整示例:

$ v=1
$ v=5 echo "$v"
1                   # I expected 5!
Run Code Online (Sandbox Code Playgroud)

bash scope subshell

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

cp和mv中的linux通配符用法

我正在编写一个脚本来处理20个文件.它们都位于不同的目录中.我有部分文件名.

  1. 在日志目录中,File1_Date_time.err更改为File1__Date_time_orig.err
  2. cd ../scripts/
  3. sh File.sh

File1
目录是/data/data1directory/Sample_File1/logs/File1_Data_time.err File2 目录是/data/data2directory/Sample_File2/logs/File2_Data_time.err
.....

我的脚本看起来像这样.(runrunrun.sh)

#!/bin/bash
INPUT=$1
mv /data/*/Sample_*/logs/*_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err
cp /data/*/Sample_*/scripts/*.sh /data/*/Sample_*/scripts/*_orig.sh
sh /data/*/Sample_*/scripts/*_orig.sh
Run Code Online (Sandbox Code Playgroud)

在运行时,我试过了.
./runrunrun.sh File1
.runrunrun.sh File1
sh runrunrun.sh File1

mv:无法移动/data/data1directory/Sample_File1/logs/File1_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err:没有这样的文件或目录cp也得到类似的反馈

我做得对吗?

谢谢!

linux shell mv cp

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

为什么在Bash中“ A = 3; A = 4 echo $ A”会产生3(而不是4)?

如果我理解正确,语法

Var=<something> command 
Run Code Online (Sandbox Code Playgroud)

将Var设置为“ something”后,应运行命令。那为什么"A=3; A=4 echo $A"我的bash 会产生3?

linux bash

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

Bash:在同一行上分配变量不会改变回声行为

a=2
a=3 echo $a     #prints 2
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么有人会在第 2 行中使用上述代码。a=3 将被忽略,因为它后面没有“输入”。但是我在上面的脚本中看到了它,但不确定目的。

bash

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

变量值在bash脚本中不会更改

运行以下代码:

a=one; echo $a
a=two echo $a
a=three echo $a >$a
Run Code Online (Sandbox Code Playgroud)

结果是

一

一

和一个名为"one"且内容为"one"的创建文件

为什么变量没有变为two第2行和three第3行?

bash shell

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

如何在具有多个环境变量的bash中启动命令

使用一个环境变量,它就像:

bash$> foo=1 echo "$foo"
1
Run Code Online (Sandbox Code Playgroud)

[编辑:如下所述,即使这样也行不通,但仅是因为$ foo之前是由其他试验设置的。在两次审判之间应该给“ unset foo”。]

但是,如果需要在启动命令的同一命令行中设置多个环境变量,该怎么办?像这些不起作用:

bash$> foo=1 bar=2 echo "$foo $bar"
1

bash$> foo=1 && bar=2 echo "$foo $bar"
1

bash$> (foo=1;foo=2) && echo "$foo $bar"
1 

bash$> (foo=1 && foo=2) && echo "$foo $bar"
1 
Run Code Online (Sandbox Code Playgroud)

可能吗?(使用脚本很明显)

bash environment-variables command-line-interface

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

在Bash中,为什么x = 100 echo $ x不打印任何内容?

我看到了这样的代码:

fqdn='computer1.daveeddy.com'

IFS=. read hostname domain tld <<< "$fqdn"
echo "$hostname is in $domain.$tld"
# => "computer1 is in daveeddy.com"
Run Code Online (Sandbox Code Playgroud)

我认为它有效,因为在第三行中将其IFS分配给.了。

x=100  echo $x
Run Code Online (Sandbox Code Playgroud)

但发现bash不能打印任何内容,而我希望它可以打印100..

而且,我发现x=100 echo $x; echo $xprint什么都没有,而x=100; echo $xprints 100却很混乱。

有人对此有想法吗?

linux variables bash shell scope

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