Articles of 庆典

使用初始命令运行交互式bash子shell,而不立即返回到(“超级”)shell

我想运行一个bash子shell,(1)运行一些命令,(2),然后留在这个子shell中去按我的意思去做。 我可以分别做这些: 使用-c标志运行命令: $> bash -c "ls; pwd; <other commands…>" 然而,在命令执行后,它会立即返回到“super”shell。 我也可以运行一个交互式的子shell: 开始新的bash过程: $> bash 它不会退出subshel​​l,直到我明确表示…但我不能运行任何初始命令。 我find的最接近的解决scheme是: $> bash -c "ls; pwd; <other commands>; exec bash" 它可以工作,但不是我想要的方式,因为它在一个子shell中运行给定的命令,然后打开一个单独的子交互。 我想在一条线上做到这一点。 一旦我退出子shell,我应该返回到正常的“超级”shell没有事件。 一定有办法~~ 注:我不是问… 而不是要求在哪里获得bash手册页 不问如何从文件中读取初始化命令…我知道如何做到这一点,这不是我正在寻找的解决scheme 对使用tmux或gnu屏幕不感兴趣 对这样的背景不感兴趣。 也就是说,这个问题是一般性的,而不是为了任何特定的目的 如果可能的话,我想避免使用这样的解决方法来完成我想要的工作,但要采用“肮脏”的方式。 我只想在一条线上做到这一点。 特别是,我不想做像xterm -e 'ls'

检查Bash中的数组是否为空

我有一个数组,充满了不同的错误消息,因为我的脚本运行。 我需要一种方法来检查脚本是否为空,如果是,请采取特定的操作。 我已经试过把它当作正常的VAR来处理,并使用-z来检查它,但这似乎不起作用。 有没有办法来检查数组是否为空或不在Bash? 谢谢

在bash中,两个&符号和一个分号是如何区别的?

如果我想在一行上运行两个单独的命令,我可以这样做: cd /home; ls -al 或这个: cd /home && ls -al 我得到了同样的结果。 但是,这两种方法在后台发生了什么? 他们之间有什么function差异?

干净的方式来写一个复杂的多行string到一个variables

我需要写一些复杂的XML到bash脚本中的variables。 xml需要在bash脚本中可读,因为这是xml片段的存放位置,而不是从另一个文件或源读取的。 所以我的问题是,如果我有一个很长的string,我想在我的bash脚本中是人类可读的,那么最好的方法是什么? 理想情况下,我想: 不必逃避任何人物 它有多条线让它可读 保持缩进 这可以通过EOF来完成吗?有谁能给我一个例子吗? 例如 String = <<EOF <?xml version="1.0" encoding='UTF-8'?> <painting> <img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/> <caption>This is Raphael's "Foligno" Madonna, painted in <date>1511</date>-<date>1512</date>.</caption> </painting> EOF