相关疑难解决方法(0)

如何使用Bash引用变量文件?

我想为变量调用一个设置文件,我怎样才能在bash中执行此操作?

因此设置文件将定义变量(例如:CONFIG.FILE):

production="liveschool_joe"
playschool="playschool_joe"
Run Code Online (Sandbox Code Playgroud)

脚本将在其中使用这些变量

#!/bin/bash
production="/REFERENCE/TO/CONFIG.FILE"
playschool="/REFERENCE/TO/CONFIG.FILE"
sudo -u wwwrun svn up /srv/www/htdocs/$production
sudo -u wwwrun svn up /srv/www/htdocs/$playschool
Run Code Online (Sandbox Code Playgroud)

我怎样才能让bash做那样的事情?我是否必须使用awk/sed等......?

variables bash configuration-files

135
推荐指数
5
解决办法
15万
查看次数

为什么要在Bash中避免使用eval,我应该使用什么呢?

我一次又一次地看到Bash在Stack Overflow上使用eval的答案,并且答案得到了抨击,双关语是为了使用这种"邪恶"结构.为什么eval这么邪恶?

如果eval不能安全使用,我应该使用什么呢?

unix linux bash eval

94
推荐指数
3
解决办法
6万
查看次数

动态创建bash变量并访问其先前定义的值

我试图读取前面定义的bash变量的值,但这个变量名称是动态派生的.

这是我想要做的bash脚本

  $ mythreshold=10
  $ table=my
  $ threshold="$table"threshold
  $ echo $("$threshold")
   mythreshold
Run Code Online (Sandbox Code Playgroud)

但是当我尝试读取这个变量值时

    $ echo $("$threshold")
    -bash: mythreshold: command not found
Run Code Online (Sandbox Code Playgroud)

但我期待它打印

  $ echo $("$threshold")
   10
Run Code Online (Sandbox Code Playgroud)

有没有办法可以得到这个工作,它应该打印上面定义的mythreshold变量的值

linux bash shell scripting sh

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

Bash:需要帮助将变量传递给 rsync

我想将$home作为运行rsync时要排除的目录列表传递。文件:

cat backup_system.sh
#!/bin/bash
set -x
home=''
home=$home'"/home/ravas/Documents/*"',
home=$home'"/home/ravas/Downloads/*"',
home=$home'"/home/ravas/pCloudDrive/*"',
home=$home'"/home/ravas/pCloudLocal/*"',
home=$home'"/home/ravas.old/*"'
echo $home
sudo rsync -aAXv / --exclude={$home,"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /run/media/ravas/system_backup
Run Code Online (Sandbox Code Playgroud)

备份在没有$home变量的情况下运行良好,但如果我添加它,它不会产生任何效果。

输出的最后两行显示$home中列出的目录未使用--exclude扩展,而其他目录则扩展。

不用说,我不太擅长 bash,任何帮助将不胜感激!

./backup_system.sh 
+ home=
+ home='"/home/ravas/Documents/*",'
+ home='"/home/ravas/Documents/*","/home/ravas/Downloads/*",'
+ home='"/home/ravas/Documents/*","/home/ravas/Downloads/*","/home/ravas/pCloudDrive/*",'
+ home='"/home/ravas/Documents/*","/home/ravas/Downloads/*","/home/ravas/pCloudDrive/*","/home/ravas/pCloudLocal/*",'
+ home='"/home/ravas/Documents/*","/home/ravas/Downloads/*","/home/ravas/pCloudDrive/*","/home/ravas/pCloudLocal/*","/home/ravas.old/*"'
+ echo '"/home/ravas/Documents/*","/home/ravas/Downloads/*","/home/ravas/pCloudDrive/*","/home/ravas/pCloudLocal/*","/home/ravas.old/*"'
"/home/ravas/Documents/*","/home/ravas/Downloads/*","/home/ravas/pCloudDrive/*","/home/ravas/pCloudLocal/*","/home/ravas.old/*"
+ sudo rsync -aAXv / 
'--exclude="/home/ravas/Documents/*","/home/ravas/Downloads/*","/home/ravas/pCloudDrive/*","/home/ravas/pCloudLocal/*","/home/ravas.old/*"' 
'--exclude=/dev/*' '--exclude=/proc/*' '--exclude=/sys/*' '--exclude=/tmp/*' '--exclude=/run/*' '--exclude=/mnt/*' '--exclude=/media/*' --exclude=/lost+found** /run/media/ravas/system_backup
Run Code Online (Sandbox Code Playgroud)

variables bash rsync

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

如何从perl脚本运行"source"命令(Linux)?

我正在尝试source从Perl脚本(script.pl)编写脚本.

system ("source /some/generic/script");
Run Code Online (Sandbox Code Playgroud)

请注意,此通用脚本可以是shell,python或任何其他脚本.此外,我无法将此通用脚本中的逻辑复制到我的Perl脚本中.我试着替换system`` exec,和qx//.每次我收到以下错误:

不能执行"source":script.pl第18行没有这样的文件或目录.

我在互联网上遇到了很多论坛,讨论了这个问题的各种原因.但他们都没有提供解决方案.有没有办法source从Perl脚本运行/执行命令?

linux bash shell perl

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

标签 统计

bash ×5

linux ×3

shell ×2

variables ×2

configuration-files ×1

eval ×1

perl ×1

rsync ×1

scripting ×1

sh ×1

unix ×1