标签: expansion

避免在bash内置函数中扩展*

我有一个bash脚本的问题.我必须使用运算符*来进行乘法运算.相反,脚本会让我厌倦扩展,并使用as运算符作为脚本本身的名称.我尝试使用单引号但它不起作用:(这是代码

#!/bin/bash -x

# Bash script that calculates an arithmetic expression
# NO PRECEDENCE FOR OPERATORS
# Operators: + - * 

if [ "$#" -lt "3" ]
then 
    echo "Usage: ./calcola.scr <num> <op> <num> ..."
    exit 1
fi

result=0
op=+
j=0

for i in "$@"
do
    if [ "$j" -eq "0" ]
    then
        # first try
        #result=$(( $result $op $i )) 

        # second try
        let "result$op=$i"

        j=1
    else
        op=$i
        j=0
    fi
done

echo "Result is $result"

exit 0
Run Code Online (Sandbox Code Playgroud)

bash scripting let expansion

4
推荐指数
2
解决办法
2736
查看次数

用于在2D网格上建立膨胀气体的算法

我有一个简单的程序,它的核心是一个浮动的二维数组,据说代表气体浓度,我一直试图想出一个简单的算法,模拟向外扩展的气体,如云,最终结束整个电网中的气体浓度相同.

例如,给定的状态进展可以是:(为简单起见,使用整数)

起始状态

00000
00000
00900
00000
00000

1次通过算法后的状态

00000
01110
01110
01110
00000

另外一个pas应该给5x5网格都包含值0.36(9/25).
我已经在纸上试过了,但无论我如何尝试,我都无法绕过算法来做到这一点.

所以我的问题是,我该如何着手尝试编写这种算法?我尝试了一些东西,应用卷积,试图依次取出每个网格单元并将其分发给邻居,但它们最终都会产生不良影响,例如最终以比我最初开始时更少的气体结束,或者所有气体运动都在一个方向,而不是从中心向外扩展.我真的无法理解它并且会感激任何帮助.

algorithm math gnu-assembler fluid expansion

4
推荐指数
2
解决办法
627
查看次数

如何防止bash中for循环中的文件名扩展

在这样的 for 循环中,

for i in `cat *.input`; do
    echo "$i"
done
Run Code Online (Sandbox Code Playgroud)

如果其中一个输入文件包含类似 的条目*a,它将给出以“a”结尾的文件名。

有没有一种简单的方法可以防止这种文件名扩展?

由于使用多个文件,通配符 ( set -o noglob) 不是一个好的选择。我也应该能够过滤输出cat以转义特殊字符,但是

for i in `cat *.input | sed 's/*/\\*'`
    ...
Run Code Online (Sandbox Code Playgroud)

仍然会导致*a扩张,而

for i in `cat *.input | sed 's/*/\\\\*'`
    ...
Run Code Online (Sandbox Code Playgroud)

给我\*a(包括反斜杠)。[我想这是一个不同的问题]

bash shell for-loop wildcard expansion

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

perl中的tab扩展

刚刚遇到在perl中进行tab扩展的代码,这里是代码:

1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
Run Code Online (Sandbox Code Playgroud)

我测试它是否正常工作,但我太了解了这一点的新手,有人想解释一下为什么它有效吗?或任何可以帮助我理解这一点的相关材料的指针将不胜感激,非常感谢.

perl tabs expansion

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

有没有办法检查,如果参数在单引号中传递?

有没有(最好的)检查方法,如果$uri用单引号传递?

#!/usr/local/bin/perl
use warnings;
use 5.012;

my $uri = shift;
# uri_check
# ...
Run Code Online (Sandbox Code Playgroud)

添加了此示例,以使我的问题更加清晰.

#!/usr/local/bin/perl
use warnings;
use 5.012;
use URI;
use URI::Escape;
use WWW::YouTube::Info::Simple;
use Term::Clui;

my $uri = shift;
# uri check here

$uri = URI->new( $uri );
my %params = $uri->query_form;
die "Malformed URL or missing parameter" if $params{v} eq '';
my $video_id = uri_escape( $params{v} );

my $yt = WWW::YouTube::Info::Simple->new( $video_id );
my $info = $yt->get_info();

my $res = $yt->get_resolution();
my @resolution;
for …
Run Code Online (Sandbox Code Playgroud)

bash perl uri arguments expansion

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

数据表行扩展事件

我正在使用Primefaces 3.0和JSF 2.0.我有一个启用扩展的数据表.我想在用户点击rowToggler时调用bean方法.基本上我只想在用户点击展开按钮时加载扩展细节.我无法在文档中看到用于行扩展的服务器端回调.如果我能解决这个问题,请告诉我.

感谢和问候,Renju

datatable jsf expansion primefaces

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

Google Play APK扩展下载程序库已损坏?

我正在尝试使用Google Play APK Expansion Downloader Library,但新安装的库似乎已损坏:我看到"src/src/com ..."和"res/res/..."文件夹.

还有人看到这个吗?移动一个文件夹的所有内容似乎可以解决问题,但为什么谷歌应该分发一些东西呢?难道我做错了什么?!

android expansion apk

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

zsh:参数扩展插入引号

我在 zsh 中进行参数扩展时遇到了麻烦:它将我的变量括在引号中。

这是我的脚本。(对噪音表示歉意,唯一真正重要的一行是通话的最后一行find,但我想确保我没有隐藏代码的详细信息)

    #broken_links [-r|--recursive] [<path>]
    # find links whose targets don't exist and print them. If <path> is given, look
    # at that path for the links. Otherwise, the current directory is used is used.
    # If --recursive is specified, look recursively through path.
    broken_links () {
        recurse=
        search_path=$(pwd)

        while test $# != 0
        do
                case "$1" in
                        -r|--recursive)
                                recurse=t
                                ;;
                        *)
                                if test -d "$1"
                                then
                                        search_path="$1"
                                else
                                        echo "$1 not a valid path or …
Run Code Online (Sandbox Code Playgroud)

parameters quotes zsh expansion

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

Makefile辅助扩展

gnu手册第3.8节说:

"在的明确的规则次膨胀,$$@$$%评价,分别向目标,并且当所述目标是存档构件,所述目标部件名的文件名.该$$<变量的计算结果为在第一个规则此目标的第一个先决条件,$$^$$+评估对那些已经出现了同一个目标(规则的所有先决条件的名单$$+有重复和$$^无)下面的例子将有助于说明这些行为:

.SECONDEXPANSION:
foo: foo.1 bar.1 $$< $$^ $$+ # line #1
foo: foo.2 bar.2 $$< $$^ $$+ # line #2
foo: foo.3 bar.3 $$< $$^ $$+ # line #3
Run Code Online (Sandbox Code Playgroud)

在第一个先决条件列表中,所有三个变量($$ <,$$ ^和$$ +)都扩展为空字符串."

我的问题:为什么$$<扩展为空字符串?上面的段落说它应该评估该目标的第一个规则的第一个必要条件.那不是foo.1吗?

gnu makefile expansion

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

使用##运算符扩展宏

大家好,问题是我在这个宏中

 #define ADD_COMP(s1,s2,type)({\
  int _x=0;\
  for(int i=0;i<n_addrs;i++){\
    if(memcmp(s1,&(s2->##type),6)!=0){\
      _x=-1;\
    }else{\
      break;\
    }\
  }\
  _x;\
})
Run Code Online (Sandbox Code Playgroud)

s1是一个简单的数组,s2是一个结构,有4个向量作为这样的成员

typedef struct example{
 char[6] one,
 char[6] two,
 char[6] three
}example;
Run Code Online (Sandbox Code Playgroud)

现在由于自己的原因,我需要创建一个函数,将大小为6字节的s1数组与仅仅示例的成员进行比较,因此为此我使用##运算符编写ADD_CMP以使其更通用所以我定义了:

#define one
#define two
#define three
Run Code Online (Sandbox Code Playgroud)

我以这种方式使用函数不同时间希望宏扩展的成功

ADD_COMP(some_array,example1,one)
ADD_COMP(some_array,example1,two)
ADD_COMP(some_array,example1,three)
Run Code Online (Sandbox Code Playgroud)

但编译器返回错误:

error: pasting "->" and "one" does not give a valid preprocessing token
error: pasting "->" and "two" does not give a valid preprocessing token
error: pasting "->" and "three" does not give a valid preprocessing token
Run Code Online (Sandbox Code Playgroud)

如何在不为每个结构成员编写相同功能的情况下修复它?

c macros expansion

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