我有一个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) 我有一个简单的程序,它的核心是一个浮动的二维数组,据说代表气体浓度,我一直试图想出一个简单的算法,模拟向外扩展的气体,如云,最终结束整个电网中的气体浓度相同.
例如,给定的状态进展可以是:(为简单起见,使用整数)
起始状态
00000
00000
00900
00000
00000
1次通过算法后的状态
00000
01110
01110
01110
00000
另外一个pas应该给5x5网格都包含值0.36(9/25).
我已经在纸上试过了,但无论我如何尝试,我都无法绕过算法来做到这一点.
所以我的问题是,我该如何着手尝试编写这种算法?我尝试了一些东西,应用卷积,试图依次取出每个网格单元并将其分发给邻居,但它们最终都会产生不良影响,例如最终以比我最初开始时更少的气体结束,或者所有气体运动都在一个方向,而不是从中心向外扩展.我真的无法理解它并且会感激任何帮助.
在这样的 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(包括反斜杠)。[我想这是一个不同的问题]
刚刚遇到在perl中进行tab扩展的代码,这里是代码:
1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
Run Code Online (Sandbox Code Playgroud)
我测试它是否正常工作,但我太了解了这一点的新手,有人想解释一下为什么它有效吗?或任何可以帮助我理解这一点的相关材料的指针将不胜感激,非常感谢.
有没有(最好的)检查方法,如果$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) 我正在使用Primefaces 3.0和JSF 2.0.我有一个启用扩展的数据表.我想在用户点击rowToggler时调用bean方法.基本上我只想在用户点击展开按钮时加载扩展细节.我无法在文档中看到用于行扩展的服务器端回调.如果我能解决这个问题,请告诉我.
感谢和问候,Renju
我正在尝试使用Google Play APK Expansion Downloader Library,但新安装的库似乎已损坏:我看到"src/src/com ..."和"res/res/..."文件夹.
还有人看到这个吗?移动一个文件夹的所有内容似乎可以解决问题,但为什么谷歌应该分发一些东西呢?难道我做错了什么?!
我在 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) 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吗?
大家好,问题是我在这个宏中
#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)
如何在不为每个结构成员编写相同功能的情况下修复它?