我有一个黑名单来保存标签ID列表,例如1-3,7-9
,实际上它代表1,2,3,7,8,9
。并且可以通过下面的shell扩展它
for i in {1..3,7..9}; do for j in {$i}; do echo -n "$j,"; done; done
1,2,3,7,8,9
但首先我应该将-
转换为..
echo -n "1-3,7-9" | sed 's/-/../g'
1..3,7..9
然后将其作为参数
放入for
表达式中
echo -n "1-3,7-9" | sed 's/-/../g' | xargs -I @ for i in {@}; do for j in {$i}; do echo -n "$j,"; done; done
zsh: parse error near `do'
echo -n "1-3,7-9" | sed 's/-/../g' | xargs -I @ echo @
1..3,7..9
但for
表达式无法正确解析,为什么会这样?
答案 0 :(得分:2)
因为您没有采取任何措施阻止最外层的shell获取特殊关键字和字符(do
,for
,$
等)oyu意味着要运行xargs
。
xargs
不是内置的shell;它从参数中获取您希望它为stdin上的每个元素运行的命令行。就像任何其他程序一样,如果你想让;
或任何其他特殊序列成为参数中的bash,你需要以某种方式逃避它。
在我看来,你真正想要的是在子shell中为每个输入元素调用一个命令(你的嵌套for
循环)。
我想出了这个;它似乎在工作。
echo -n "1-3,7-9" \
| sed 's/-/../g' \
| xargs -I @ \
bash -c "for i in {@}; do for j in {\$i}; do echo -n \"\$j,\"; done; done;"
给出了
{1..3},{7..9},
到目前为止,我认为这是你所希望的?
答案 1 :(得分:0)
可以使用下面的shell来实现这个
awk
但使用这种方式有点复杂,# awk
echo "1-3,7-9,11,13-17" | awk '{n=split($0,a,","); for(i=1;i<=n;i++){m=split(a[i],a2,"-");for(j=a2[1];j<=a2[m];j++){print j}}}' | tr '\n' ','
1,2,3,7,8,9,11,13,14,15,16,17,%
更直观
class A extends Model {
public $first;
public $b;
public function __construct() {
$this -> b = new B();
}
}
class B extends Model {
public $c;
public function __construct() {
$this -> c = new C();
}
}
class C extends Model {
public $foo;
}
答案 2 :(得分:0)
add_action( 'wp_enqueue_scripts', 'enqueue_unique_function_name_here', 0);
function enqueue_unique_function_name_here()
{
wp_enqueue_style( 'css_unique_handle_name_here', get_stylesheet_directory_uri(). 'folder_path_inside_child_theme/style_sheet_file_name_here.css', array(), '0.0.1' );
}