Articles of bash

bash中的对话框不能正确地获取variables

我对这个脚本的一致性有点问题。 你可以运行一次,没有任何问题。 但是,如果立即将其加载并重新运行,则不会正确获取variables,因为输出不会以正确的方式写入文件。 例如:该实用程序旨在更新4个文件。 .temp,.tiers,.version和.sync通过对话提示的各个阶段,它会更新一个文件。 我的问题是,有些时候它不会更新文件,我不能find任何原因,因为它只有在你已经运行一次。 我在启动时擦除了文件,所以我不确定这个交易是什么。 这就像是从内存中抓取它? 无论如何,要testing这个,你需要在/ test下面的文件 感谢任何能给我一些指导的人。 cat .tiers Stable=1 Release=2 Beta=3 码: #!/usr/bin/env bash touch .version touch .temp VERSION=`cat .version` DIR=/test/ STORED=`cat ${DIR}/.temp` ################################ # REARRANGE TIERS # ################################ rearrange() { start end } ################################ # SYNC FILE EXISTS # ################################ sync_exists() { dialog –msgbox ".sync exists in the directory […]

获取刚启动的屏幕会话的PID

你如何获得刚刚创build的屏幕会话的PID,如: screen -dm -S test ping localhost screen -ls There is a screen on: 3310.test (09/04/15 14:07:41) (Detached) 我想要3310 我正在看Bash:获得守护进程的屏幕会话PID,但它不符合我所需要的。 我一直在尝试 screen -dm -s test ping localhost | echo $! 但是pid被两个或者一个关掉了

如何编写多个ssh和scp命令到不同的系统

我想编写一系列涉及多个ssh和scp调用的命令。 我每天都会自己手动执行这个任务: 从LOCAL系统,ssh到SYSTEM1 mkdir / tmp / data在SYSTEM1上 从SYSTEM1,ssh到SYSTEM2 SYSTEM2上的mkdir / tmp / data 从SYSTEM2,SSH到SYSTEM3 从SYSTEM3:/ data到SYSTEM2:/ tmp / data的scp文件 退出到SYSTEM2 从SYSTEM2:/ data和SYSTEM2:/ tmp / data到SYSTEM1:/ tmp / data的scp文件 rm -fr SYSTEM2:/ tmp / data 退出到SYSTEM1 从SYSTEM1:/ data和SYSTEM1:/ tmp / data到本地:/ data的scp文件 rm -fr SYSTEM1:/ tmp / data 我每天至less做一次这个过程,在不同的系统之间需要大约5-10分钟的时间,然后再进行清理。 我真的想在bash脚本中自动化这个,但是到目前为止我的业余尝试都没有成功。 正如您可能会怀疑的那样,系统通信受到限制,这意味着LOCAL只能看到System1,System2只能看到System1和System3,system3只能看到system2等等。 做这个的最好方式是什么? 此外,System1是许多其他系统的集线器,因此SYSTEM2必须由用户指定(与任何SYSTEM2相比,System3始终具有相同的相对IP /主机名)。 我试着把这些命令按照正确的顺序放在一个shell脚本中,然后在提示时手动input密码(这已经是一个巨大的效率增益),但是这个方法不起作用,或者我的脚本执行是错误的。 […]

不能在bash中增加一个variables

我正在尝试创build一个脚本来计算运行该脚本的文件夹中隐藏和非隐藏文件的数量。 但是,我碰到一个问题,我不能增加variables。 #!/bin/bash #A simple script to count the number of hidden and non-hidden files in the folder this script is run in #Variables to store the number of hidden and non-hidden files and folders #Variables with a 'h' at the end represent hidden items files=0 fileh=0 #List all files and folders #Use grep to […]

使用bash脚本连接到远程SQL Server

我们公司在另一个国家有一个db(SQL Server)。 我有主机名,用户名和数据库的密码。 我想通过bash shell从数据库中提取数据,并把它们放到本地文件中。 我怎样才能做到这一点?

Linux中的dynamic环境variables?

有没有可能在Linux中有dynamic环境variables? 我有一个网站服务器的网站遵循这个布局: site/ qa/ production/ 我想有一个环境variables(例如APPLICATION_ENV),当我在qa目录中时设置为“qa”,当我在生产目录中时,设置为“production”。 原因是各个站点可以使用许多不同的stream程,所有stream程都需要知道是QA还是生产环境。 一些网站在Apache下使用PHP,一些使用Node.js,一些网站使用命令行工具,cron作业等等。 我希望得到一个关于是质量保证还是生产环境的授权来源。

如何在远程主机上运行bash函数()? 在Ubuntu中

我正在运行一个bash脚本,但是当我尝试在远程机器上运行函数时,它说 bash: keyConfig: command not found 这是我的脚本: keyConfig() { sed -i.bak -r "/^$1/s/([^']+')([^']+)('.*)/\1$2\3/" $3 } remoteExecution() { ssh ppuser@10.101.5.91 " keyConfig $1 $2 $4 " } remoteExecution

在Bash脚本中find基于文件名的自动完成

有一个我一直想要的命令行function,我想过如何最好地实现它,但我什么都没有… 所以我想要的是当我开始input一个文件名并点击标签,例如: # git add Foo<tab> 我想要它运行一个find . -name "*$1*" find . -name "*$1*"并基本自动完成匹配的文件到我的命令行的完整path。 我到目前为止: 我知道我将不得不编写一个函数,用我想要的参数调用应用程序,例如git add 。 之后,它需要捕捉tab-keystroke事件并执行上面提到的查找,并显示结果如果多,或者填写结果(如果有)。 我无法弄清楚的是: 如何捕捉函数内的一个函数内的Tab键事件。 所以基本上是伪代码: gadd() {git add autocomplete_file_search($1)} autocomplete_file_search(keyword) { if( tab-key-pressed ){ files = find . -name "*$1*"; if( filecount > 1 ) { show list; } if( files == 1 ) { return files } […]

跳过使用Wget成功下载的文件

所以我有这个Bash子例程使用wget下载文件,现在我的问题是如何跳过成功下载的文件。 该脚本下载了大量文件,一旦下载失败,它将重新下载所有文件,从头开始覆盖这些成功的下载(可能由于重新下载而不完整)。 那么如何跳过那些成功下载的文件呢? DownloadFile() { paramURL=$1 paramFilename=$2 if [ $flag_archive_fetch = "false" ]; then wget "–timeout=180" "–tries=5" "$paramURL" "-O" "${scratch_dir}$paramFilename" else unzip -o "$archive_file" "$paramFilename" -d "${scratch_dir}" fi touch "${scratch_dir}$paramFilename" }

Visual Studio 2017无法创build目录,mkdir退出代码:1

我已经将Visual Studio 2017连接到SSH服务器(Windows 10 Ubuntu Bash)。 编译时,我得到一个错误: F:\ Program Files(x86)\ Microsoft Visual Studio 2017 \ Common7 \ IDE \ VC \ VCTargets \ Application Type \ Linux \ 1.0 \ Linux.Common.targets(89,5):error:Could not create directories,mkdir exit code :1 Ubuntu中的用户有权创build目录。